From 235157d7d97213b4de5537c6199bd2cd767b2550 Mon Sep 17 00:00:00 2001 From: armingol Date: Mon, 3 Feb 2025 13:26:20 +0100 Subject: [PATCH] sap_topology --- deploy/all.sh | 2 +- linkerd.json | 0 logs.txt | 9776 +++++ logsContext.txt | 737 + logsUI.txt | 33523 +++++++++++++++ manifests/deviceservice.yaml | 2 +- manifests/nbiservice.yaml | 2 +- my_deploy.sh | 6 +- nbiLogs.txt | 26 + quick_deploy.sh | 438 + .../service/DeviceServiceServicerImpl.py | 12 +- src/device/service/OpenConfigServicer.py | 2 +- .../drivers/openconfig/OpenConfigDriver.py | 2 +- .../drivers/openconfig/templates/EndPoints.py | 6 +- .../openconfig/templates/Interfaces.py | 23 +- .../drivers/openconfig/templates/Tools.py | 7 +- src/nbi/service/__main__.py | 2 + .../ietf_sap_topology/ComposeLink.py | 53 + .../ietf_sap_topology/ComposeNetwork.py | 115 + .../ietf_sap_topology/ComposeNode.py | 107 + .../ietf_sap_topology/ComposeTermPoint.py | 102 + .../ietf_sap_topology/ManualFixes.py | 73 + .../ietf_sap_topology/NameMapping.py | 46 + .../ietf_sap_topology/NetworkTypeEnum.py | 23 + .../nbi_plugins/ietf_sap_topology/Networks.py | 112 + .../nbi_plugins/ietf_sap_topology/README.md | 14 + .../ietf_sap_topology/SAP_Topology.py | 112 + .../ietf_sap_topology/YangHandler.py | 155 + .../nbi_plugins/ietf_sap_topology/__init__.py | 44 + .../ietf_sap_topology/_docs/test_commands.txt | 26 + .../ietf_sap_topology/bindings/__init__.py | 256 + .../bindings/networks/__init__.py | 162 + .../bindings/networks/network/__init__.py | 385 + .../networks/network/link/__init__.py | 294 + .../network/link/destination/__init__.py | 159 + .../networks/network/link/source/__init__.py | 157 + .../network/link/supporting_link/__init__.py | 172 + .../networks/network/link/te/__init__.py | 603 + .../network/link/te/bundled_links/__init__.py | 118 + .../te/bundled_links/bundled_link/__init__.py | 203 + .../link/te/component_links/__init__.py | 120 + .../component_link/__init__.py | 204 + .../te/information_source_entry/__init__.py | 749 + .../information_source_state/__init__.py | 248 + .../topology/__init__.py | 162 + .../__init__.py | 206 + .../max_lsp_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 156 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../max_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../max_resv_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../te_nsrlgs/__init__.py | 118 + .../te_srlgs/__init__.py | 115 + .../unreserved_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../te/information_source_state/__init__.py | 248 + .../topology/__init__.py | 162 + .../network/link/te/recovery/__init__.py | 154 + .../network/link/te/statistics/__init__.py | 810 + .../link/te/te_link_attributes/__init__.py | 938 + .../te_link_attributes/client_svc/__init__.py | 115 + .../external_domain/__init__.py | 205 + .../__init__.py | 206 + .../max_lsp_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 156 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../max_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../max_resv_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../te_link_attributes/otn_link/__init__.py | 199 + .../te_link_attributes/te_nsrlgs/__init__.py | 118 + .../te_link_attributes/te_srlgs/__init__.py | 115 + .../te_link_attributes/underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../unreserved_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../network/link/te/underlay/__init__.py | 154 + .../network/network_types/__init__.py | 118 + .../network_types/te_topology/__init__.py | 36 + .../networks/network/node/__init__.py | 291 + .../network/node/supporting_node/__init__.py | 168 + .../networks/network/node/te/__init__.py | 519 + .../network/node/te/geolocation/__init__.py | 193 + .../te/information_source_entry/__init__.py | 451 + .../connectivity_matrices/__init__.py | 412 + .../connectivity_matrix/__init__.py | 405 + .../connectivity_matrix/from_/__init__.py | 155 + .../from_/label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../connectivity_matrix/to/__init__.py | 155 + .../to/label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../connectivity_matrix/underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../information_source_state/__init__.py | 248 + .../topology/__init__.py | 162 + .../underlay_topology/__init__.py | 118 + .../te/information_source_state/__init__.py | 248 + .../topology/__init__.py | 162 + .../network/node/te/statistics/__init__.py | 207 + .../connectivity_matrix_entry/__init__.py | 282 + .../node/te/statistics/node/__init__.py | 273 + .../node/te/te_node_attributes/__init__.py | 357 + .../connectivity_matrices/__init__.py | 412 + .../connectivity_matrix/__init__.py | 405 + .../connectivity_matrix/from_/__init__.py | 155 + .../from_/label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../connectivity_matrix/to/__init__.py | 155 + .../to/label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../connectivity_matrix/underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../underlay_topology/__init__.py | 118 + .../te/tunnel_termination_point/__init__.py | 597 + .../client_layer_adaptation/__init__.py | 117 + .../switching_capability/__init__.py | 206 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../geolocation/__init__.py | 193 + .../local_link_connectivities/__init__.py | 418 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../local_link_connectivity/__init__.py | 368 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../optimizations/__init__.py | 199 + .../objective_function/__init__.py | 116 + .../optimization_metric/__init__.py | 241 + .../__init__.py | 118 + .../route_object_exclude_object/__init__.py | 365 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../srlg/__init__.py | 115 + .../unnumbered_link_hop/__init__.py | 236 + .../__init__.py | 118 + .../route_object_include_object/__init__.py | 325 + .../as_number_hop/__init__.py | 154 + .../label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../optimizations/tiebreakers/__init__.py | 120 + .../tiebreakers/tiebreaker/__init__.py | 122 + .../path_constraints/__init__.py | 523 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_metric_bounds/__init__.py | 116 + .../path_metric_bound/__init__.py | 165 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../path_constraints/te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 163 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../path_properties/__init__.py | 318 + .../path_affinities_values/__init__.py | 116 + .../path_affinities_value/__init__.py | 161 + .../path_affinity_names/__init__.py | 116 + .../path_affinity_name/__init__.py | 162 + .../affinity_name/__init__.py | 120 + .../path_properties/path_metric/__init__.py | 159 + .../path_route_objects/__init__.py | 119 + .../path_route_object/__init__.py | 327 + .../as_number_hop/__init__.py | 154 + .../path_route_object/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../path_srlgs_lists/__init__.py | 116 + .../path_srlgs_list/__init__.py | 161 + .../path_srlgs_names/__init__.py | 116 + .../path_srlgs_name/__init__.py | 161 + .../underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../statistics/__init__.py | 207 + .../local_link_connectivity/__init__.py | 272 + .../tunnel_termination_point/__init__.py | 435 + .../__init__.py | 172 + .../node/termination_point/__init__.py | 339 + .../termination_point/eth_link_tp/__init__.py | 315 + .../egress_bandwidth_profile/__init__.py | 355 + .../ingress_bandwidth_profile/__init__.py | 355 + .../__init__.py | 356 + .../termination_point/eth_svc/__init__.py | 158 + .../supported_classification/__init__.py | 160 + .../vlan_classification/__init__.py | 202 + .../vlan_classification/outer_tag/__init__.py | 202 + .../second_tag/__init__.py | 243 + .../supported_vlan_operations/__init__.py | 240 + .../vlan_pop/__init__.py | 158 + .../vlan_push/__init__.py | 201 + .../vlan_push/outer_tag/__init__.py | 161 + .../vlan_push/second_tag/__init__.py | 202 + .../supporting_termination_point/__init__.py | 222 + .../node/termination_point/te/__init__.py | 445 + .../te/client_svc/__init__.py | 115 + .../te/geolocation/__init__.py | 193 + .../__init__.py | 206 + .../max_lsp_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 156 + .../termination_point/te/otn_ltp/__init__.py | 121 + .../network/supporting_network/__init__.py | 121 + .../bindings/networks/network/te/__init__.py | 283 + .../network/te/geolocation/__init__.py | 193 + .../networks/network/te/nsrlg/__init__.py | 159 + .../te_topology_identifier/__init__.py | 205 + .../bindings/networks/te/__init__.py | 118 + .../networks/te/templates/__init__.py | 161 + .../te/templates/link_template/__init__.py | 251 + .../te_link_attributes/__init__.py | 858 + .../external_domain/__init__.py | 205 + .../__init__.py | 206 + .../max_lsp_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 156 + .../label_restrictions/__init__.py | 120 + .../label_restriction/__init__.py | 450 + .../ethernet_label_range/__init__.py | 154 + .../label_restriction/label_end/__init__.py | 119 + .../label_end/te_label/__init__.py | 234 + .../label_end/te_label/otn/__init__.py | 154 + .../label_restriction/label_start/__init__.py | 120 + .../label_start/te_label/__init__.py | 234 + .../label_start/te_label/otn/__init__.py | 154 + .../label_restriction/label_step/__init__.py | 200 + .../label_step/otn/__init__.py | 158 + .../otn_label_range/__init__.py | 256 + .../max_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../max_resv_link_bandwidth/__init__.py | 119 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../te_link_attributes/te_nsrlgs/__init__.py | 118 + .../te_link_attributes/te_srlgs/__init__.py | 115 + .../te_link_attributes/underlay/__init__.py | 326 + .../underlay/backup_path/__init__.py | 207 + .../backup_path/path_element/__init__.py | 321 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../underlay/primary_path/__init__.py | 158 + .../primary_path/path_element/__init__.py | 320 + .../path_element/as_number_hop/__init__.py | 154 + .../path_element/label_hop/__init__.py | 118 + .../label_hop/te_label/__init__.py | 234 + .../label_hop/te_label/otn/__init__.py | 209 + .../numbered_link_hop/__init__.py | 193 + .../numbered_node_hop/__init__.py | 154 + .../unnumbered_link_hop/__init__.py | 236 + .../tunnel_termination_points/__init__.py | 154 + .../underlay/tunnels/__init__.py | 167 + .../underlay/tunnels/tunnel/__init__.py | 170 + .../unreserved_bandwidth/__init__.py | 163 + .../te_bandwidth/__init__.py | 195 + .../te_bandwidth/otn/__init__.py | 116 + .../te_bandwidth/otn/odulist/__init__.py | 200 + .../te/templates/node_template/__init__.py | 251 + .../te_node_attributes/__init__.py | 317 + .../underlay_topology/__init__.py | 118 + .../ietf_sap_topology/build-yang-bindings.sh | 44 + .../yang/iana-routing-types@2017-12-04.yang | 473 + .../yang/ietf-ac-ntw@2024-05-15.yang | 2019 + .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 ++ .../ietf-eth-tran-service@2023-10-23.yang | 1004 + .../yang/ietf-eth-tran-types@2023-10-23.yang | 457 + .../yang/ietf-ethertypes@2019-03-04.yang | 381 + .../yang/ietf-inet-types@2013-07-15.yang | 459 + .../ietf-l3-unicast-topology@2018-02-26.yang | 359 + .../yang/ietf-layer1-types@2022-10-14.yang | 1414 + .../yang/ietf-netconf-acm@2018-02-14.yang | 464 + .../ietf-network-topology@2018-02-26.yang | 294 + .../yang/ietf-network@2018-02-26.yang | 193 + .../yang/ietf-otn-topology@2023-07-06.yang | 2405 ++ .../yang/ietf-packet-fields@2019-03-04.yang | 576 + .../yang/ietf-routing-types@2017-12-04.yang | 774 + .../yang/ietf-sap-ntw@2023-06-20.yang | 350 + .../yang/ietf-te-packet-types@2020-06-10.yang | 475 + .../yang/ietf-te-topology@2020-08-06.yang | 1952 + .../yang/ietf-te-types@2020-06-10.yang | 3379 ++ .../ietf-trans-client-service@2023-10-23.yang | 325 + ...etf-trans-client-svc-types@2023-10-23.yang | 63 + .../yang/ietf-vpn-common@2022-02-11.yang | 2251 ++ .../yang/ietf-yang-types@2013-07-15.yang | 475 + .../grpc/context/ContextOuterClass.java | 9556 +++-- .../grpc/context/ContextService.java | 14 +- .../grpc/context/ContextServiceBean.java | 51 +- .../grpc/context/ContextServiceClient.java | 31 +- .../grpc/context/ContextServiceGrpc.java | 288 +- .../context/MutinyContextServiceGrpc.java | 91 +- .../generated-sources/grpc/acl/Acl.java | 1257 +- .../grpc/context/ContextOuterClass.java | 33691 ++++++++-------- .../grpc/context/ContextService.java | 14 +- .../grpc/context/ContextServiceBean.java | 51 +- .../grpc/context/ContextServiceClient.java | 31 +- .../grpc/context/ContextServiceGrpc.java | 416 +- .../context/MutinyContextServiceGrpc.java | 91 +- .../generated-sources/grpc/device/Device.java | 425 +- .../grpc/device/DeviceServiceGrpc.java | 34 +- .../grpc/monitoring/Monitoring.java | 5773 ++- .../monitoring/MonitoringServiceGrpc.java | 60 +- .../generated-sources/grpc/ztp/Ztp.java | 1315 +- .../grpc/ztp/ZtpServiceGrpc.java | 36 +- tfs.json | 59 + 889 files changed, 255752 insertions(+), 24121 deletions(-) create mode 100644 linkerd.json create mode 100644 logs.txt create mode 100644 logsContext.txt create mode 100644 logsUI.txt create mode 100644 nbiLogs.txt create mode 100755 quick_deploy.sh create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeLink.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNetwork.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNode.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeTermPoint.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ManualFixes.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NameMapping.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NetworkTypeEnum.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/Networks.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/README.md create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/SAP_Topology.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/_docs/test_commands.txt create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/destination/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/source/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/supporting_link/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/bundled_link/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/component_link/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_nsrlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_srlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/recovery/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/statistics/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/client_svc/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/external_domain/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/otn_link/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_nsrlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_srlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/te_topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/supporting_node/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/geolocation/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/underlay_topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/connectivity_matrix_entry/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/node/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/underlay_topology/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/geolocation/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/supporting_termination_point/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/client_svc/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/geolocation/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/otn_ltp/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/supporting_network/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/geolocation/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/nsrlg/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te_topology_identifier/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/external_domain/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_nsrlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_srlgs/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/underlay_topology/__init__.py create mode 100755 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/build-yang-bindings.sh create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/iana-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ac-ntw@2024-05-15.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-te-topology@2023-09-28.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-service@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-types@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ethertypes@2019-03-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-inet-types@2013-07-15.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-l3-unicast-topology@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-layer1-types@2022-10-14.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-netconf-acm@2018-02-14.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network-topology@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-otn-topology@2023-07-06.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-packet-fields@2019-03-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-sap-ntw@2023-06-20.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-packet-types@2020-06-10.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-topology@2020-08-06.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-types@2020-06-10.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-service@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-svc-types@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-vpn-common@2022-02-11.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-yang-types@2013-07-15.yang create mode 100644 tfs.json diff --git a/deploy/all.sh b/deploy/all.sh index 97f4db37d..8ce78c18f 100755 --- a/deploy/all.sh +++ b/deploy/all.sh @@ -30,7 +30,7 @@ export TFS_REGISTRY_IMAGES=${TFS_REGISTRY_IMAGES:-"http://localhost:32000/tfs/"} export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device pathcomp service slice nbi webui load_generator"} # Uncomment to activate Monitoring (old) -#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" +export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" # Uncomment to activate Monitoring Framework (new) #export TFS_COMPONENTS="${TFS_COMPONENTS} kpi_manager kpi_value_writer kpi_value_api telemetry analytics" diff --git a/linkerd.json b/linkerd.json new file mode 100644 index 000000000..e69de29bb diff --git a/logs.txt b/logs.txt new file mode 100644 index 000000000..ca2efea89 --- /dev/null +++ b/logs.txt @@ -0,0 +1,9776 @@ +[2025-02-03 11:59:16,830] INFO:__main__:Starting... +[2025-02-03 11:59:16,832] DEBUG:monitoring.client.MonitoringClient:Creating channel to monitoringservice:7070... +[2025-02-03 11:59:16,833] DEBUG:monitoring.client.MonitoringClient:Channel created +[2025-02-03 11:59:16,833] DEBUG:device.service.DeviceServiceServicerImpl:Creating Servicer... +[2025-02-03 11:59:16,833] DEBUG:device.service.DeviceServiceServicerImpl:Servicer Created +[2025-02-03 11:59:16,833] DEBUG:device.service.OpenConfigServicer:Creating Servicer... +[2025-02-03 11:59:16,833] DEBUG:device.service.OpenConfigServicer:Servicer Created +[2025-02-03 11:59:16,833] INFO:device.service.DeviceService:Starting Service (tentative endpoint: 0.0.0.0:2020, max_workers: 200)... +[2025-02-03 11:59:16,840] INFO:device.service.DeviceService:Listening on 0.0.0.0:2020... +[2025-02-03 11:59:16,842] DEBUG:device.service.DeviceService:Service started +[2025-02-03 11:59:16,842] INFO:__main__:Pre-loading drivers... +[2025-02-03 11:59:16,842] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.234:1010... +[2025-02-03 11:59:16,843] DEBUG:context.client.ContextClient:Channel created +[2025-02-03 11:59:16,843] DEBUG:context.client.ContextClient:ListDevices request: {} +[2025-02-03 11:59:17,066] DEBUG:context.client.ContextClient:ListDevices result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.127"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R199"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.126"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "50f6fe52-9cbd-5e7b-b4ad-082a264c4452"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R155"}, {"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.125"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "fd28848d-18e7-5cb5-bb02-4085d088eede"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R149"}]} +[2025-02-03 11:59:17,067] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:17,067] INFO:device.service.driver_api.DriverInstanceCache:Driver(OpenConfigDriver) selected for device(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:17,069] DEBUG:tzlocal:/etc/timezone found, contents: + Etc/UTC + +[2025-02-03 11:59:17,071] DEBUG:tzlocal:/etc/localtime found +[2025-02-03 11:59:17,073] DEBUG:tzlocal:2 found: + {'/etc/timezone': 'Etc/UTC', '/etc/localtime is a symlink to': 'Etc/UTC'} +[2025-02-03 11:59:17,077] DEBUG:ncclient.transport.session:[host None session 0x7f6a54bb3f40] created: client_capabilities= +[2025-02-03 11:59:19,286] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session 0x7f6a54bb3f40] parsing netconf v1.0 +[2025-02-03 11:59:19,287] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session 0x7f6a54bb3f40] parsing netconf v1.0 +[2025-02-03 11:59:19,287] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session 0x7f6a54bb3f40] parsing netconf v1.0 +[2025-02-03 11:59:19,288] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session 0x7f6a54bb3f40] parsing netconf v1.0 +[2025-02-03 11:59:19,288] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session 0x7f6a54bb3f40] parsing netconf v1.0 +[2025-02-03 11:59:19,293] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(50f6fe52-9cbd-5e7b-b4ad-082a264c4452) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:19,293] INFO:device.service.driver_api.DriverInstanceCache:Driver(OpenConfigDriver) selected for device(50f6fe52-9cbd-5e7b-b4ad-082a264c4452) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:19,294] DEBUG:ncclient.transport.session:[host None session 0x7f6a54318ee0] created: client_capabilities= +[2025-02-03 11:59:22,082] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,088] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,089] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,098] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,098] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session 0x7f6a54318ee0] parsing netconf v1.0 +[2025-02-03 11:59:22,106] INFO:device.service.driver_api.DriverInstanceCache:Selecting driver for device(fd28848d-18e7-5cb5-bb02-4085d088eede) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:22,106] INFO:device.service.driver_api.DriverInstanceCache:Driver(OpenConfigDriver) selected for device(fd28848d-18e7-5cb5-bb02-4085d088eede) with filter_fields({'device_type': 'packet-router', 'driver': [1]})... +[2025-02-03 11:59:22,108] DEBUG:ncclient.transport.session:[host None session 0x7f6a542d00d0] created: client_capabilities= +[2025-02-03 11:59:22,243] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,244] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,245] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,245] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,246] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,247] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,248] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,248] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,249] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,250] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 11:59:22,250] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session 0x7f6a542d00d0] parsing netconf v1.0 +[2025-02-03 12:01:41,748] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.125"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "R149"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": ""} +[2025-02-03 12:01:41,750] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.234:1010... +[2025-02-03 12:01:41,751] DEBUG:context.client.ContextClient:Channel created +[2025-02-03 12:01:41,752] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "R149"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} +[2025-02-03 12:01:41,753] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.127"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "R199"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": ""} +[2025-02-03 12:01:41,754] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.234:1010... +[2025-02-03 12:01:41,755] DEBUG:context.client.ContextClient:Channel created +[2025-02-03 12:01:41,755] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "R199"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} +[2025-02-03 12:01:41,757] DEBUG:device.service.DeviceServiceServicerImpl:AddDevice request: {"components": [], "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.126"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "R155"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": ""} +[2025-02-03 12:01:41,757] DEBUG:context.client.ContextClient:Creating channel to 10.152.183.234:1010... +[2025-02-03 12:01:41,758] DEBUG:context.client.ContextClient:Channel created +[2025-02-03 12:01:41,758] DEBUG:context.client.ContextClient:SelectDevice request: {"device_ids": {"device_ids": [{"device_uuid": {"uuid": "R155"}}]}, "include_components": true, "include_config_rules": true, "include_endpoints": true} +[2025-02-03 12:01:41,802] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.125"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "fd28848d-18e7-5cb5-bb02-4085d088eede"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R149"}]} +[2025-02-03 12:01:41,803] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 1 +[2025-02-03 12:01:41,804] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 2 +[2025-02-03 12:01:41,818] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:01:41,819] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:01:41,841] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.127"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R199"}]} +[2025-02-03 12:01:41,841] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 1 +[2025-02-03 12:01:41,841] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 2 +[2025-02-03 12:01:41,842] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:01:41,842] DEBUG:context.client.ContextClient:SelectDevice result: {"devices": [{"components": [], "controller_id": {}, "device_config": {"config_rules": [{"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "10.95.90.126"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "830"}}, {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": "{\n\"allow_agent\": false,\n\"delete_rule\": true,\n\"device_params\": {\n\"name\": \"huaweiyang\"\n},\n\"force_running\": false,\n\"hostkey_verify\": false,\n\"look_for_keys\": false,\n\"manager_params\": {\n\"timeout\": 120\n},\n\"message_renderer\": \"pyangbind\",\n\"password\": \"Pablo_123\",\n\"username\": \"yangsuite\",\n\"vendor\": \"ADVA\"\n}"}}]}, "device_drivers": ["DEVICEDRIVER_OPENCONFIG"], "device_endpoints": [], "device_id": {"device_uuid": {"uuid": "50f6fe52-9cbd-5e7b-b4ad-082a264c4452"}}, "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_type": "packet-router", "name": "R155"}]} +[2025-02-03 12:01:41,843] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:01:41,843] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 1 +[2025-02-03 12:01:41,843] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 2 +[2025-02-03 12:01:41,844] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:01:41,844] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:01:50,500] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,501] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 998 bytes +[2025-02-03 12:01:50,502] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,502] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,503] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,504] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 986 bytes +[2025-02-03 12:01:50,505] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 986 bytes +[2025-02-03 12:01:50,505] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "chassischassis7315-30X-O-48V-Soc-platform-types:CHASSIS7315-30X-O-48V-S7315-30X-O-48V-S7315-30X-O-48V-S2021-10-25R0B21.5.1 (9799)731530X2143013falseoc-platform-types:ACTIVEfalsechassis29.7cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzAccton2021-11-01v43.01.01.02CPUC-DVN-0619-ZZfalseoc-platform-types:ACTIVEfalsechassis15366344000863620000533531533000000000017385876880816000431738587700083015927Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Boc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12BCRXT-T0T12B21030005131700000439Atrueoc-platform-types:ACTIVEfalsechassistrueAACSQg==AACwPw==AABVQg==AADAQA==001CQA==AACLQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:50,543] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:50,543] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,543] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,544] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 957 bytes +[2025-02-03 12:01:50,544] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 957 bytes +[2025-02-03 12:01:50,544] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "AAAAAA==AAAAAA==eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT2100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00112233eth-1/0/3" +[2025-02-03 12:01:50,545] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3996 bytes from start of buffer +[2025-02-03 12:01:50,545] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,546] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,547] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,548] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,548] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 3996 +[2025-02-03 12:01:50,548] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 3996 bytes, original size 4148 +[2025-02-03 12:01:50,548] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:50,548] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,552] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 152 bytes +[2025-02-03 12:01:50,552] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,552] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,552] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,553] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,553] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,553] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:50,553] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4248 bytes +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,554] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT" +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1016 bytes +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1016 bytes +[2025-02-03 12:01:50,555] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4" +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2053 bytes from start of buffer +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 992 bytes +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 992 bytes +[2025-02-03 12:01:50,556] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT625G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00eth-1/0/7eth-1/0/7oc-platform-types:PORT725G/10G/1G Fiber1oc-eth:SPEED_25GB" +[2025-02-03 12:01:50,567] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1026 bytes from start of buffer +[2025-02-03 12:01:50,567] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,567] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,567] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:50,567] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1014 bytes +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT825G/10G/1G Fiber" +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2047 bytes from start of buffer +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1021 bytes +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_25GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9eth-1/0/9oc-platform-types:PORT9" +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,568] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "25G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/1" +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4106 bytes from start of buffer +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4106 +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4106 bytes, original size 4286 +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:50,569] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 180 bytes +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,570] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,571] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4276 bytes +[2025-02-03 12:01:50,571] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,571] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,572] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,572] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0oc-platform-types:PORT1025G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT0" +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:50,574] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1007 bytes +[2025-02-03 12:01:50,574] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:INACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250012 000-50.0-1.30.0" +[2025-02-03 12:01:50,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4046 bytes from start of buffer +[2025-02-03 12:01:50,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:50,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4046 +[2025-02-03 12:01:50,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4046 bytes, original size 4276 +[2025-02-03 12:01:50,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:50,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 230 bytes +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4326 bytes +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1012 bytes +[2025-02-03 12:01:50,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEfalseeth-1/0/13PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD1331A02S9 000-50.0-3.20.1eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber" +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEfalseeth-1/0/15PRESENToc-opt-types:SFP" +[2025-02-03 12:01:50,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4103 bytes from start of buffer +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 996 bytes +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4103 +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4103 bytes, original size 4326 +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 223 bytes +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 996 bytes +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4319 bytes +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,583] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 996 bytes +[2025-02-03 12:01:50,584] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 996 bytes +[2025-02-03 12:01:50,584] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P13RE000-50.0-40.00.0eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00" +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3011 bytes from start of buffer +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:50,585] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD0911A00C2 000-50.0-40.00.1eth-1/0/20eth" +[2025-02-03 12:01:50,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2019 bytes from start of buffer +[2025-02-03 12:01:50,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:50,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:50,590] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEtrueeth-1/0/20PRESENT0oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEfalseeth-1/0/21PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MV 000-50.0-50.00.0eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00" +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2032 bytes from start of buffer +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 983 bytes +[2025-02-03 12:01:50,594] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MZ 000-50.0-2.60.0eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00" +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:50,598] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEtrueeth-1/0/25PRESENT00eth-1/0/26eth-1/0/26oc-platform-types:PORT2610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00eth-1/0/27eth-1/0/27oc-platform-types:PORT271G Copper1oc-eth:SPEED_1GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27falseoc-platform-types:INACTIVEtrueeth-1/0/27PRESENT00eth-1/0/28eth-1/0/28oc-platform-types:PORT281G Copper1oc-eth:SPEED_1GB" +[2025-02-03 12:01:50,603] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:50,603] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,603] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#28Transceiver#28oc-platform-types:TRANSCEIVER28falseoc-platform-types:INACTIVEtrueeth-1/0/28PRESENT00eth-1/0/29eth-1/0/29oc-platform-types:PORT291G Copper" +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2046 bytes from start of buffer +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:01:50,604] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_1GBTransceiver#29Transceiver#29oc-platform-types:TRANSCEIVER29falseoc-platform-types:INACTIVEtrueeth-1/0/29PRESENT00eth-1/0/30eth-1/0/30oc-platform-types:PORT" +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1002 bytes +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "301G Copper1oc-eth:SPEED_1GBTransceiver#30Transceiver#30oc-platform-types:TRANSCEIVER30falseoc-platform-types:INACTIVEtrueeth-1/0/30PRESENT00" +[2025-02-03 12:01:50,605] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4084 bytes from start of buffer +[2025-02-03 12:01:50,606] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:50,606] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:01:50,612] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:01:50,613] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4088 bytes, original size 4088 +[2025-02-03 12:01:50,613] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:50,616] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.127:830]:Exception retrieving resource_key[#0]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:50,620] DEBUG:device.service.Tools:results_getconfig = [('__endpoints__', TypeError("parse() missing 1 required positional argument: 'device_sap'"))] +[2025-02-03 12:01:50,620] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 3 +[2025-02-03 12:01:50,622] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:01:50,623] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:01:50,985] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:50,985] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:50,985] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,986] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,986] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:50,987] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:50,987] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,987] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:50,988] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:50,989] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:50,992] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:50,992] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,993] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-08R0D21.5.1 (9799)731527XB1952144falseoc-platform-types:ACTIVEfalsechassis35.3cpucpuoc-platf" +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:50,994] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:50,995] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:50,995] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:50,995] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,996] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,997] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:50,997] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:50,997] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:50,997] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:50,998] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:50,998] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:50,998] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:50,999] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:50,999] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:50,999] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:50,999] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,000] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,000] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis151990920001017788000523531523000000000017385472662382121601738547284240214857Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#3Fan#3oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1029 bytes, original size 1029 +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1037 bytes +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,006] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "10500Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1030 +[2025-02-03 12:01:51,007] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1030 bytes, original size 1037 +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,008] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,009] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,009] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,009] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,009] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1028 bytes +[2025-02-03 12:01:51,010] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,010] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,010] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,010] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:51,010] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1014 bytes +[2025-02-03 12:01:51,011] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "19330053131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AACsQA==TDdBQA==AACHQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:51,015] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2056 bytes from start of buffer +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3087 bytes from start of buffer +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,016] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3087 +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3087 bytes, original size 3094 +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,017] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,018] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,019] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,019] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,020] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,020] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1031 +[2025-02-03 12:01:51,021] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:01:51,021] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,022] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,022] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:51,022] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,022] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,023] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,023] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,023] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,023] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,023] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,024] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,024] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,024] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4103 bytes +[2025-02-03 12:01:51,024] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,025] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,025] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,025] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,025] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,025] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 990 bytes +[2025-02-03 12:01:51,026] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00" +[2025-02-03 12:01:51,029] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4035 bytes from start of buffer +[2025-02-03 12:01:51,030] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,030] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,031] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,031] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,032] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4035 +[2025-02-03 12:01:51,032] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4035 bytes, original size 4103 +[2025-02-03 12:01:51,032] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,032] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,033] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 68 bytes +[2025-02-03 12:01:51,033] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,033] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,033] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4164 bytes +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,034] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,035] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,035] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,035] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:51,035] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEfalseeth-1/0/7" +[2025-02-03 12:01:51,035] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:51,036] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,036] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,036] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,036] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00125143N000-50.0-40.00.0eth-1/0/8eth-1/0/8oc-platform" +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2061 bytes from start of buffer +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9" +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3087 bytes from start of buffer +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,037] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT0" +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4114 bytes from start of buffer +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4114 +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4114 bytes, original size 4164 +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,038] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 50 bytes +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,039] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,040] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4146 bytes +[2025-02-03 12:01:51,040] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,041] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,041] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,041] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,042] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:51,042] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORCISCO-ACCELINK RTXM228-401-C981.oc-opt-types:ETH_10GBASE_LRACW2607096J 000" +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4049 bytes from start of buffer +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,045] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4049 +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4049 bytes, original size 4146 +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 97 bytes +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,046] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4193 bytes +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:51,047] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "-2.5-7.514.67eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:51,049] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3024 bytes from start of buffer +[2025-02-03 12:01:51,049] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,049] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,049] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:51,050] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:01:51,050] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber" +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4048 bytes from start of buffer +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4048 +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4048 bytes, original size 4193 +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 145 bytes +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:51,051] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4241 bytes +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1018 bytes +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:ACTIVEfalseeth-1/0/16PRESENToc-opt-types:SFPHISILICON OM9150 0 030SBF6TH66178900" +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,052] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,053] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 992 bytes +[2025-02-03 12:01:51,053] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 992 bytes +[2025-02-03 12:01:51,053] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEfalseeth-1/0/17PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00183038D000-50.0-40.00.0eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00" +[2025-02-03 12:01:51,053] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4055 bytes from start of buffer +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4055 +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4055 bytes, original size 4241 +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 186 bytes +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,054] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4282 bytes +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:51,055] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEtrueeth-1/0/19PRESENT00eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P1452000-50.0-40.00.0" +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2991 bytes from start of buffer +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1011 bytes +[2025-02-03 12:01:51,056] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:ACTIVEfalseeth-1/0/22PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006PS 000-2.2-3.23.12" +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2000 bytes from start of buffer +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1010 bytes +[2025-02-03 12:01:51,059] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:ACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPFINISAR CORP. FCLF8521P2BTL A PYA2FD5 00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250017 000-50.0-1.10.0eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26" +[2025-02-03 12:01:51,062] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3008 bytes from start of buffer +[2025-02-03 12:01:51,062] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,062] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00112233eth-1/0/27eth-1/0/27oc-platform-types:PORT27" +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4038 bytes from start of buffer +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4038 +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4038 bytes, original size 4417 +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,063] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 379 bytes +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2511 bytes +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,064] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-ty" +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1022 bytes +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "pes:LC_CONNECTORFINISAR CORP. FTLC1154SDPL-CNA0oc-opt-types:ETH_100GBASE_LR4FNSRMYU3RA0W9 0002.9-40.020.541113.5-40.018.952222.9-40.0" +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2060 bytes from start of buffer +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 441 bytes +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 441 bytes +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "20.493332.5-40.020.13" +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2507 bytes from start of buffer +[2025-02-03 12:01:51,065] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:51,066] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:01:51,068] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:01:51,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2511 bytes, original size 2511 +[2025-02-03 12:01:51,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:51,071] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.125:830]:Exception retrieving resource_key[#0]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:51,071] DEBUG:device.service.Tools:results_getconfig = [('__endpoints__', TypeError("parse() missing 1 required positional argument: 'device_sap'"))] +[2025-02-03 12:01:51,072] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 3 +[2025-02-03 12:01:51,072] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:01:51,072] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:01:51,261] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,262] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:51,262] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,263] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,263] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,264] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,264] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,265] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-09R0D21.5.1 (9799)731527XB1952198falseoc-platform-types:ACTIVEfalsechassis34.3cpucpuoc-platf" +[2025-02-03 12:01:51,266] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:51,266] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,267] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,267] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 2069 bytes +[2025-02-03 12:01:51,268] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,268] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,269] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,270] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,270] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,271] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis15237072000961492000533432533000000000017385834109887003011738583414997368348Fan#1Fan#1AS7315oc-platform-types:FAN1Fans tray" +[2025-02-03 12:01:51,271] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,272] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,273] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,273] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,274] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,275] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#3Fan#3" +[2025-02-03 12:01:51,275] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:01:51,276] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,278] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,279] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 2062 +[2025-02-03 12:01:51,279] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 2062 bytes, original size 2069 +[2025-02-03 12:01:51,281] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,282] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,282] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:51,282] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,283] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,283] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,284] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,286] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,286] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4103 bytes +[2025-02-03 12:01:51,288] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:51,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10500Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:51,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:51,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1023 bytes +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "11025Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,296] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:51,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:01:51,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "19430061131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AADUQA==/KlBQA==AACdQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:01:51,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2056 bytes from start of buffer +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3087 bytes from start of buffer +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4118 bytes from start of buffer +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,310] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4118 +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4118 bytes, original size 5120 +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1002 bytes +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,311] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 5098 bytes +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,312] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 990 bytes +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 990 bytes +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEfalseeth-1/0/6PRESENToc-opt-types:SFP" +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4034 bytes from start of buffer +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,313] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:01:51,314] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 993 bytes +[2025-02-03 12:01:51,314] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015675 000-1.9-40.03.13eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:ACTIVEfalseeth-1/0/8PRESENToc-opt-types:SFP" +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2005 bytes from start of buffer +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 973 bytes +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 973 bytes +[2025-02-03 12:01:51,318] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORPDDG S10G-T-80D-T 1.P22224B0404 0000.3-8.418.89eth-1/0/9eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber" +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4015 bytes from start of buffer +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4015 +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4015 bytes, original size 4161 +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 146 bytes +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,319] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:51,320] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,320] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,320] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,320] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,320] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4242 bytes +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:01:51,321] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:ACTIVEfalseeth-1/0/11PRESENToc-opt-types:SFP" +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2045 bytes from start of buffer +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 995 bytes +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 995 bytes +[2025-02-03 12:01:51,322] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250018 000-1.9-4.53.48eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORAPAC Opto " +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4067 bytes from start of buffer +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4067 +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4067 bytes, original size 4242 +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 175 bytes +[2025-02-03 12:01:51,323] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,324] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,324] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,324] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,324] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,324] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4271 bytes +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "LS38-C3S-TC-N-D00A702021596 000-6.3-7.170.93eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13" +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,325] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10G" +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2059 bytes from start of buffer +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 977 bytes +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 977 bytes +[2025-02-03 12:01:51,326] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "BTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00" +[2025-02-03 12:01:51,331] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:01:51,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:51,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 982 bytes +[2025-02-03 12:01:51,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015671 000" +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 981 bytes +[2025-02-03 12:01:51,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-1.9-40.03.1eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:ACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250020 000-2.1-3.23.34" +[2025-02-03 12:01:51,338] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3023 bytes from start of buffer +[2025-02-03 12:01:51,338] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,338] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,338] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:51,339] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:51,339] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEtrueeth-1/0/23PRESENT00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3024 bytes from start of buffer +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:ACTIVEfalseeth-1/0/24PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747" +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4055 bytes from start of buffer +[2025-02-03 12:01:51,344] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4055 +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4055 bytes, original size 4482 +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,345] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 427 bytes +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,346] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4523 bytes +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,347] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "006N2 000-2.2-5.02.73eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25o" +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "c-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250016 000-1.9-50" +[2025-02-03 12:01:51,348] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = ".03.66eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVE" +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3093 bytes from start of buffer +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,349] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "falseeth-1/0/26PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORSmartOptics QSFP28-LR4 A1oc-opt-types:ETH_100GBASE_LR4VE2227000436 0001.4-37.042.65111" +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4117 bytes from start of buffer +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:51,350] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4117 +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4117 bytes, original size 4523 +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 406 bytes +[2025-02-03 12:01:51,351] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,352] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,352] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,352] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:51,352] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:51,352] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 3474 bytes +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:51,353] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-0.3-40.042.72220.0-40.047.63330.5-40.045.0eth-1/0/27eth-1/0/27oc-platform-types:PORT27100G/40G Fiber" +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1018 bytes from start of buffer +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,354] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORPRECISION " +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2049 bytes from start of buffer +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1015 bytes +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " PRE-QSFP28-LR4 00oc-opt-types:ETH_100GBASE_LR4BH211025388 0002.2-40.027.591111.9-40.027.462222.0-40.027.58" +[2025-02-03 12:01:51,355] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3071 bytes from start of buffer +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 393 bytes +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 393 bytes +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3331.9-40.027.55" +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3470 bytes from start of buffer +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:51,356] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:01:51,358] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:01:51,358] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3474 bytes, original size 3474 +[2025-02-03 12:01:51,358] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:51,360] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.126:830]:Exception retrieving resource_key[#0]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:51,360] DEBUG:device.service.Tools:results_getconfig = [('__endpoints__', TypeError("parse() missing 1 required positional argument: 'device_sap'"))] +[2025-02-03 12:01:51,360] INFO:device.service.DeviceServiceServicerImpl:ENTRA AQUÍ 3 +[2025-02-03 12:01:51,361] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:01:51,361] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:01:54,691] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 998 bytes +[2025-02-03 12:01:54,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 986 bytes +[2025-02-03 12:01:54,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 986 bytes +[2025-02-03 12:01:54,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "chassischassis7315-30X-O-48V-Soc-platform-types:CHASSIS7315-30X-O-48V-S7315-30X-O-48V-S7315-30X-O-48V-S2021-10-25R0B21.5.1 (9799)731530X2143013falseoc-platform-types:ACTIVEfalsechassis29.7cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzAccton2021-11-01v43.01.01.02CPUC-DVN-0619-ZZfalseoc-platform-types:ACTIVEfalsechassis15367308000862644000423731533000000000017385876880816000431738587700083015927Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Power-Supply#1Power-Supply#1CRXT-T0T12Boc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12BCRXT-T0T12B21030005131700000439Atrueoc-platform-types:ACTIVEfalsechassistrueAACSQg==AACwPw==AABVQg==AAC0QA==cT1CQA==AAB+Qg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:54,711] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2056 bytes from start of buffer +[2025-02-03 12:01:54,711] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,712] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,712] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 957 bytes +[2025-02-03 12:01:54,713] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 957 bytes +[2025-02-03 12:01:54,713] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "AAAAAA==AAAAAA==eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT2100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00112233eth-1/0/3" +[2025-02-03 12:01:54,719] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT" +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1016 bytes +[2025-02-03 12:01:54,720] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1016 bytes +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4" +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3081 bytes from start of buffer +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 992 bytes +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 992 bytes +[2025-02-03 12:01:54,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT625G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00eth-1/0/7eth-1/0/7oc-platform-types:PORT725G/10G/1G Fiber1oc-eth:SPEED_25GB" +[2025-02-03 12:01:54,724] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2033 bytes from start of buffer +[2025-02-03 12:01:54,724] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,724] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,724] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:54,724] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1014 bytes +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT825G/10G/1G Fiber" +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3054 bytes from start of buffer +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1021 bytes +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_25GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9eth-1/0/9oc-platform-types:PORT9" +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4082 bytes from start of buffer +[2025-02-03 12:01:54,725] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,726] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,727] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:54,728] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,728] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4082 +[2025-02-03 12:01:54,728] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4082 bytes, original size 4220 +[2025-02-03 12:01:54,728] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:54,729] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,729] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 138 bytes +[2025-02-03 12:01:54,729] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,730] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4234 bytes +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "25G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/1" +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0oc-platform-types:PORT1025G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT0" +[2025-02-03 12:01:54,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2061 bytes from start of buffer +[2025-02-03 12:01:54,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:54,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1007 bytes +[2025-02-03 12:01:54,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:INACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250012 000-50.0-1.30.0" +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1014 bytes from start of buffer +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1012 bytes +[2025-02-03 12:01:54,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEfalseeth-1/0/13PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD1331A02S9 000-50.0-3.20.1eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber" +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3056 bytes from start of buffer +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:54,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEfalseeth-1/0/15PRESENToc-opt-types:SFP" +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 996 bytes +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 996 bytes +[2025-02-03 12:01:54,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P13RE000-50.0-40.00.0eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00" +[2025-02-03 12:01:54,742] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4042 bytes from start of buffer +[2025-02-03 12:01:54,742] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,742] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,742] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4042 +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4042 bytes, original size 4277 +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 235 bytes +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:54,743] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4331 bytes +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:54,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD0911A00C2 000-50.0-40.00.1eth-1/0/20eth" +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3007 bytes from start of buffer +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:54,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEtrueeth-1/0/20PRESENT0oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEfalseeth-1/0/21PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MV 000-50.0-50.00.0eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00" +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3048 bytes from start of buffer +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 983 bytes +[2025-02-03 12:01:54,751] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MZ 000-50.0-2.60.0eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00" +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2031 bytes from start of buffer +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:54,754] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEtrueeth-1/0/25PRESENT00eth-1/0/26eth-1/0/26oc-platform-types:PORT2610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00eth-1/0/27eth-1/0/27oc-platform-types:PORT271G Copper1oc-eth:SPEED_1GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27falseoc-platform-types:INACTIVEtrueeth-1/0/27PRESENT00eth-1/0/28eth-1/0/28oc-platform-types:PORT281G Copper1oc-eth:SPEED_1GB" +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2028 bytes from start of buffer +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#28Transceiver#28oc-platform-types:TRANSCEIVER28falseoc-platform-types:INACTIVEtrueeth-1/0/28PRESENT00eth-1/0/29eth-1/0/29oc-platform-types:PORT291G Copper" +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3050 bytes from start of buffer +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,757] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_1GBTransceiver#29Transceiver#29oc-platform-types:TRANSCEIVER29falseoc-platform-types:INACTIVEtrueeth-1/0/29PRESENT00eth-1/0/30eth-1/0/30oc-platform-types:PORT" +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4079 bytes from start of buffer +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4079 +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4079 bytes, original size 4537 +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 458 bytes +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1013 bytes +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:54,759] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:54,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1002 bytes +[2025-02-03 12:01:54,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "301G Copper1oc-eth:SPEED_1GBTransceiver#30Transceiver#30oc-platform-types:TRANSCEIVER30falseoc-platform-types:INACTIVEtrueeth-1/0/30PRESENT00" +[2025-02-03 12:01:54,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1009 bytes from start of buffer +[2025-02-03 12:01:54,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:54,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:01:54,765] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:01:54,765] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1013 bytes, original size 1013 +[2025-02-03 12:01:54,765] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:54,769] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'chassischassis7315-30X-O-48V-Soc-platform-types:CHASSIS7315-30X-O-48V-S7315-30X-O-48V-S7315-30X-O-48V-S2021-10-25R0B21.5.1 (9799)731530X2143013falseoc-platform-types:ACTIVEfalsechassis29.7' +[2025-02-03 12:01:54,769] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzAccton2021-11-01v43.01.01.02CPUC-DVN-0619-ZZfalseoc-platform-types:ACTIVEfalsechassis15367308000862644000423731533000000000017385876880816000431738587700083015927' +[2025-02-03 12:01:54,770] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025' +[2025-02-03 12:01:54,770] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025' +[2025-02-03 12:01:54,770] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325' +[2025-02-03 12:01:54,771] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675' +[2025-02-03 12:01:54,771] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025' +[2025-02-03 12:01:54,771] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#1Power-Supply#1CRXT-T0T12Boc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12BCRXT-T0T12B21030005131700000439Atrueoc-platform-types:ACTIVEfalsechassistrueAACSQg==AACwPw==AABVQg==AAC0QA==cT1CQA==AAB+Qg==' +[2025-02-03 12:01:54,772] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==' +[2025-02-03 12:01:54,772] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:54,772] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233' +[2025-02-03 12:01:54,773] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/2eth-1/0/2oc-platform-types:PORT2100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:54,773] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00112233' +[2025-02-03 12:01:54,774] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,774] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00' +[2025-02-03 12:01:54,774] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,775] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00' +[2025-02-03 12:01:54,775] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,775] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00' +[2025-02-03 12:01:54,776] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/6eth-1/0/6oc-platform-types:PORT625G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,776] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00' +[2025-02-03 12:01:54,776] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/7eth-1/0/7oc-platform-types:PORT725G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,776] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00' +[2025-02-03 12:01:54,777] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/8eth-1/0/8oc-platform-types:PORT825G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,777] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00' +[2025-02-03 12:01:54,777] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/9eth-1/0/9oc-platform-types:PORT925G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,778] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00' +[2025-02-03 12:01:54,778] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/10eth-1/0/10oc-platform-types:PORT1025G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:54,778] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00' +[2025-02-03 12:01:54,779] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,779] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00' +[2025-02-03 12:01:54,779] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,779] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:INACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250012 000-50.0-1.30.0' +[2025-02-03 12:01:54,780] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,780] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEfalseeth-1/0/13PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD1331A02S9 000-50.0-3.20.1' +[2025-02-03 12:01:54,780] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,781] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00' +[2025-02-03 12:01:54,781] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,781] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEfalseeth-1/0/15PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P13RE000-50.0-40.00.0' +[2025-02-03 12:01:54,782] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,782] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00' +[2025-02-03 12:01:54,783] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,784] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00' +[2025-02-03 12:01:54,784] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,784] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00' +[2025-02-03 12:01:54,785] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,785] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD0911A00C2 000-50.0-40.00.1' +[2025-02-03 12:01:54,785] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,785] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEtrueeth-1/0/20PRESENT00' +[2025-02-03 12:01:54,786] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,786] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEfalseeth-1/0/21PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MV 000-50.0-50.00.0' +[2025-02-03 12:01:54,786] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,787] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00' +[2025-02-03 12:01:54,787] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,787] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MZ 000-50.0-2.60.0' +[2025-02-03 12:01:54,788] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,788] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00' +[2025-02-03 12:01:54,788] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,788] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEtrueeth-1/0/25PRESENT00' +[2025-02-03 12:01:54,789] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/26eth-1/0/26oc-platform-types:PORT2610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:54,789] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00' +[2025-02-03 12:01:54,789] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/27eth-1/0/27oc-platform-types:PORT271G Copper1oc-eth:SPEED_1GB' +[2025-02-03 12:01:54,789] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27falseoc-platform-types:INACTIVEtrueeth-1/0/27PRESENT00' +[2025-02-03 12:01:54,790] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/28eth-1/0/28oc-platform-types:PORT281G Copper1oc-eth:SPEED_1GB' +[2025-02-03 12:01:54,790] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#28Transceiver#28oc-platform-types:TRANSCEIVER28falseoc-platform-types:INACTIVEtrueeth-1/0/28PRESENT00' +[2025-02-03 12:01:54,790] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/29eth-1/0/29oc-platform-types:PORT291G Copper1oc-eth:SPEED_1GB' +[2025-02-03 12:01:54,790] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#29Transceiver#29oc-platform-types:TRANSCEIVER29falseoc-platform-types:INACTIVEtrueeth-1/0/29PRESENT00' +[2025-02-03 12:01:54,791] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/30eth-1/0/30oc-platform-types:PORT301G Copper1oc-eth:SPEED_1GB' +[2025-02-03 12:01:54,791] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#30Transceiver#30oc-platform-types:TRANSCEIVER30falseoc-platform-types:INACTIVEtrueeth-1/0/30PRESENT00' +[2025-02-03 12:01:54,792] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:01:54,792] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,216] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,217] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,218] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,218] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-09R0D21.5.1 (9799)731527XB1952198falseoc-platform-types:ACTIVEfalsechassis34.7cpucpuoc-platf" +[2025-02-03 12:01:55,218] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:55,218] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,218] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,219] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,220] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,221] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,221] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis15237040000961520000453832533000000000017385834109887003011738583414997368348Fan#1Fan#1AS7315oc-platform-types:FAN1Fans tray" +[2025-02-03 12:01:55,221] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:55,221] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,221] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,222] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,223] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,223] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#3Fan#3" +[2025-02-03 12:01:55,224] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:55,225] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,225] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,226] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,227] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,227] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1028 bytes +[2025-02-03 12:01:55,228] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,228] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,228] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,228] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:55,228] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:55,229] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10500Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:55,229] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1028 bytes, original size 1028 +[2025-02-03 12:01:55,229] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,229] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,229] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,230] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,231] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,232] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,232] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1037 bytes +[2025-02-03 12:01:55,232] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,233] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,233] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,233] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,234] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1023 bytes +[2025-02-03 12:01:55,234] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "11025Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:55,235] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:55,235] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,235] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,235] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:55,235] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 1030 +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1030 bytes, original size 1037 +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,236] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,237] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,237] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,237] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:55,238] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,238] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,239] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,239] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,239] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,240] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 3084 bytes +[2025-02-03 12:01:55,240] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,240] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,240] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,241] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:55,242] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:01:55,242] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "19430061131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AADUQA==hetBQA==AACXQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:55,245] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2050 bytes from start of buffer +[2025-02-03 12:01:55,245] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,245] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,246] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:55,246] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:01:55,246] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:55,247] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3077 bytes from start of buffer +[2025-02-03 12:01:55,247] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,247] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,248] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,248] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,248] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 3077 +[2025-02-03 12:01:55,249] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3077 bytes, original size 3084 +[2025-02-03 12:01:55,249] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,249] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,250] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,250] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,251] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,251] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,251] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,252] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,252] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,253] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,254] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,254] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,254] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4103 bytes +[2025-02-03 12:01:55,254] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,255] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,255] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,256] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,256] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,256] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:55,256] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,257] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,257] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,257] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,258] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,258] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:55,258] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:01:55,258] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,259] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,260] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,260] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,261] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:55,262] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3093 bytes from start of buffer +[2025-02-03 12:01:55,262] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,262] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,263] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 990 bytes +[2025-02-03 12:01:55,263] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 990 bytes +[2025-02-03 12:01:55,263] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEfalseeth-1/0/6PRESENToc-opt-types:SFP" +[2025-02-03 12:01:55,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2007 bytes from start of buffer +[2025-02-03 12:01:55,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,277] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:01:55,278] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 993 bytes +[2025-02-03 12:01:55,278] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015675 000-1.9-40.03.13eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:ACTIVEfalseeth-1/0/8PRESENToc-opt-types:SFP" +[2025-02-03 12:01:55,283] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:55,283] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,284] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,284] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 973 bytes +[2025-02-03 12:01:55,284] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 973 bytes +[2025-02-03 12:01:55,284] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORPDDG S10G-T-80D-T 1.P22224B0404 0000.3-8.418.89eth-1/0/9eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber" +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3034 bytes from start of buffer +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:01:55,285] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:ACTIVEfalseeth-1/0/11PRESENToc-opt-types:SFP" +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 995 bytes +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 995 bytes +[2025-02-03 12:01:55,287] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250018 000-1.9-4.53.48eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORAPAC Opto " +[2025-02-03 12:01:55,288] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3051 bytes from start of buffer +[2025-02-03 12:01:55,288] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,288] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,288] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "LS38-C3S-TC-N-D00A702021596 000-6.3-7.170.93eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13" +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4079 bytes from start of buffer +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,289] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4079 +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4079 bytes, original size 4265 +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 186 bytes +[2025-02-03 12:01:55,290] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,291] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4282 bytes +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,292] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10G" +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 977 bytes +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 977 bytes +[2025-02-03 12:01:55,293] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "BTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00" +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4023 bytes from start of buffer +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4023 +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4023 bytes, original size 4282 +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 259 bytes +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,294] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4355 bytes +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 982 bytes +[2025-02-03 12:01:55,295] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015671 000" +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4009 bytes from start of buffer +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4009 +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4009 bytes, original size 4355 +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 346 bytes +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,297] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4442 bytes +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 981 bytes +[2025-02-03 12:01:55,298] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-1.9-40.03.1eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:ACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250020 000-2.1-3.23.34" +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1999 bytes from start of buffer +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:55,299] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEtrueeth-1/0/23PRESENT00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:55,301] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2036 bytes from start of buffer +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:ACTIVEfalseeth-1/0/24PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747" +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3067 bytes from start of buffer +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "006N2 000-2.2-5.02.73eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25o" +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4098 bytes from start of buffer +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4098 +[2025-02-03 12:01:55,302] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4098 bytes, original size 4533 +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 435 bytes +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4531 bytes +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,303] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "c-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250016 000-1.9-50" +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = ".03.66eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVE" +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "falseeth-1/0/26PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORSmartOptics QSFP28-LR4 A1oc-opt-types:ETH_100GBASE_LR4VE2227000436 0001.4-37.042.65111" +[2025-02-03 12:01:55,304] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3086 bytes from start of buffer +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-0.3-40.042.72220.0-40.047.63330.5-40.045.0eth-1/0/27eth-1/0/27oc-platform-types:PORT27100G/40G Fiber" +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4104 bytes from start of buffer +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4104 +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4104 bytes, original size 4531 +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 427 bytes +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,305] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 2456 bytes +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORPRECISION " +[2025-02-03 12:01:55,306] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1015 bytes +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " PRE-QSFP28-LR4 00oc-opt-types:ETH_100GBASE_LR4BH211025388 0002.2-40.027.591111.9-40.027.462222.0-40.027.58" +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2053 bytes from start of buffer +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 393 bytes +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 393 bytes +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3331.9-40.027.55" +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2452 bytes from start of buffer +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:55,307] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:01:55,309] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:01:55,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 2456 bytes, original size 2456 +[2025-02-03 12:01:55,309] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:55,310] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-09R0D21.5.1 (9799)731527XB1952198falseoc-platform-types:ACTIVEfalsechassis34.7' +[2025-02-03 12:01:55,311] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis15237040000961520000453832533000000000017385834109887003011738583414997368348' +[2025-02-03 12:01:55,311] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325' +[2025-02-03 12:01:55,311] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675' +[2025-02-03 12:01:55,311] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10500' +[2025-02-03 12:01:55,312] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025' +[2025-02-03 12:01:55,312] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200' +[2025-02-03 12:01:55,312] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A19430061131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AADUQA==hetBQA==AACXQg==' +[2025-02-03 12:01:55,312] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==' +[2025-02-03 12:01:55,313] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,313] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233' +[2025-02-03 12:01:55,313] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,313] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00' +[2025-02-03 12:01:55,314] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,314] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00' +[2025-02-03 12:01:55,314] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,314] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00' +[2025-02-03 12:01:55,315] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,315] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00' +[2025-02-03 12:01:55,315] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,316] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEfalseeth-1/0/6PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015675 000-1.9-40.03.13' +[2025-02-03 12:01:55,316] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,316] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00' +[2025-02-03 12:01:55,316] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/8eth-1/0/8oc-platform-types:PORT810G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,317] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:ACTIVEfalseeth-1/0/8PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORPDDG S10G-T-80D-T 1.P22224B0404 0000.3-8.418.89' +[2025-02-03 12:01:55,317] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/9eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,317] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00' +[2025-02-03 12:01:55,318] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,318] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00' +[2025-02-03 12:01:55,318] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,318] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:ACTIVEfalseeth-1/0/11PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250018 000-1.9-4.53.48' +[2025-02-03 12:01:55,319] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,319] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORAPAC Opto LS38-C3S-TC-N-D00A702021596 000-6.3-7.170.93' +[2025-02-03 12:01:55,319] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,320] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00' +[2025-02-03 12:01:55,320] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,320] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00' +[2025-02-03 12:01:55,321] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,321] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00' +[2025-02-03 12:01:55,321] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,321] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00' +[2025-02-03 12:01:55,322] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,322] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00' +[2025-02-03 12:01:55,322] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,322] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00' +[2025-02-03 12:01:55,323] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,323] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015671 000-1.9-40.03.1' +[2025-02-03 12:01:55,323] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,324] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:ACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250020 000-2.1-3.23.34' +[2025-02-03 12:01:55,324] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,324] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00' +[2025-02-03 12:01:55,325] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,325] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00' +[2025-02-03 12:01:55,325] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,325] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEtrueeth-1/0/23PRESENT00' +[2025-02-03 12:01:55,326] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,326] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:ACTIVEfalseeth-1/0/24PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006N2 000-2.2-5.02.73' +[2025-02-03 12:01:55,326] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,326] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250016 000-1.9-50.03.66' +[2025-02-03 12:01:55,327] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,327] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEfalseeth-1/0/26PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORSmartOptics QSFP28-LR4 A1oc-opt-types:ETH_100GBASE_LR4VE2227000436 0001.4-37.042.65111-0.3-40.042.72220.0-40.047.63330.5-40.045.0' +[2025-02-03 12:01:55,327] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/27eth-1/0/27oc-platform-types:PORT27100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,328] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORPRECISION PRE-QSFP28-LR4 00oc-opt-types:ETH_100GBASE_LR4BH211025388 0002.2-40.027.591111.9-40.027.462222.0-40.027.583331.9-40.027.55' +[2025-02-03 12:01:55,328] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:01:55,329] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:01:55,367] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,367] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:01:55,367] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-08R0D21.5.1 (9799)731527XB1952144falseoc-platform-types:ACTIVEfalsechassis35.3cpucpuoc-platf" +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1031 +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:01:55,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,371] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,372] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,373] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,373] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,373] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis151983440001018536000423731523000000000017385472662382121601738547284240214857Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Fan#3Fan#3oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:55,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:55,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,385] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,385] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "10675Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2059 bytes from start of buffer +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:55,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1014 bytes +[2025-02-03 12:01:55,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "19330053131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AAC0QA==/tRAQA==AACTQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:55,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1029 bytes, original size 1029 +[2025-02-03 12:01:55,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,391] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,391] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,391] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,391] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:55,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,393] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,393] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1027 bytes +[2025-02-03 12:01:55,393] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:55,394] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1027 bytes, original size 1027 +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,395] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,396] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,397] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:55,398] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,400] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1037 bytes +[2025-02-03 12:01:55,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1031 +[2025-02-03 12:01:55,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1037 +[2025-02-03 12:01:55,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:55,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1984 bytes +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:55,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 990 bytes +[2025-02-03 12:01:55,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00" +[2025-02-03 12:01:55,417] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEfalseeth-1/0/7" +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2057 bytes from start of buffer +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00125143N000-50.0-40.00.0eth-1/0/8eth-1/0/8oc-platform" +[2025-02-03 12:01:55,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3088 bytes from start of buffer +[2025-02-03 12:01:55,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3088 +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3088 bytes, original size 4103 +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1015 bytes +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 5111 bytes +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9" +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1026 bytes from start of buffer +[2025-02-03 12:01:55,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT0" +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2053 bytes from start of buffer +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:55,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORCISCO-ACCELINK RTXM228-401-C981.oc-opt-types:ETH_10GBASE_LRACW2607096J 000" +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:55,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "-2.5-7.514.67eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4046 bytes from start of buffer +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4046 +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4046 bytes, original size 4127 +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 81 bytes +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:55,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4177 bytes +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber" +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1018 bytes +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:ACTIVEfalseeth-1/0/16PRESENToc-opt-types:SFPHISILICON OM9150 0 030SBF6TH66178900" +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2049 bytes from start of buffer +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 992 bytes +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 992 bytes +[2025-02-03 12:01:55,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEfalseeth-1/0/17PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00183038D000-50.0-40.00.0eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00" +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:55,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEtrueeth-1/0/19PRESENT00eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P1452000-50.0-40.00.0" +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4013 bytes from start of buffer +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4013 +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4013 bytes, original size 4216 +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 203 bytes +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4299 bytes +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:55,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1011 bytes +[2025-02-03 12:01:55,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:ACTIVEfalseeth-1/0/22PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006PS 000-2.2-3.23.12" +[2025-02-03 12:01:55,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3018 bytes from start of buffer +[2025-02-03 12:01:55,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:01:55,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1010 bytes +[2025-02-03 12:01:55,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:ACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPFINISAR CORP. FCLF8521P2BTL A PYA2FD5 00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250017 000-50.0-1.10.0eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26" +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4039 bytes from start of buffer +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4039 +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4039 bytes, original size 4360 +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 321 bytes +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 3541 bytes +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00112233eth-1/0/27eth-1/0/27oc-platform-types:PORT27" +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-ty" +[2025-02-03 12:01:55,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2061 bytes from start of buffer +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1022 bytes +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "pes:LC_CONNECTORFINISAR CORP. FTLC1154SDPL-CNA0oc-opt-types:ETH_100GBASE_LR4FNSRMYU3RA0W9 0002.9-40.020.541113.5-40.018.952222.9-40.0" +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3090 bytes from start of buffer +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 441 bytes +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 441 bytes +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "20.493332.5-40.020.13" +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3537 bytes from start of buffer +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:55,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:01:55,445] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:01:55,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3541 bytes, original size 3541 +[2025-02-03 12:01:55,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:55,447] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-08R0D21.5.1 (9799)731527XB1952144falseoc-platform-types:ACTIVEfalsechassis35.3' +[2025-02-03 12:01:55,447] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis151983440001018536000423731523000000000017385472662382121601738547284240214857' +[2025-02-03 12:01:55,447] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025' +[2025-02-03 12:01:55,448] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200' +[2025-02-03 12:01:55,448] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675' +[2025-02-03 12:01:55,449] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675' +[2025-02-03 12:01:55,449] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200' +[2025-02-03 12:01:55,450] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A19330053131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AAC0QA==/tRAQA==AACTQg==' +[2025-02-03 12:01:55,450] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==' +[2025-02-03 12:01:55,451] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,451] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233' +[2025-02-03 12:01:55,452] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,452] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00' +[2025-02-03 12:01:55,452] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,453] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00' +[2025-02-03 12:01:55,453] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,453] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00' +[2025-02-03 12:01:55,454] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GB' +[2025-02-03 12:01:55,454] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00' +[2025-02-03 12:01:55,454] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,455] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00' +[2025-02-03 12:01:55,455] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,455] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEfalseeth-1/0/7PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00125143N000-50.0-40.00.0' +[2025-02-03 12:01:55,456] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/8eth-1/0/8oc-platform-types:PORT810G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,456] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00' +[2025-02-03 12:01:55,456] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/9eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,457] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00' +[2025-02-03 12:01:55,457] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,458] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00' +[2025-02-03 12:01:55,458] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,458] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00' +[2025-02-03 12:01:55,459] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,459] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORCISCO-ACCELINK RTXM228-401-C981.oc-opt-types:ETH_10GBASE_LRACW2607096J 000-2.5-7.514.67' +[2025-02-03 12:01:55,459] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,460] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00' +[2025-02-03 12:01:55,460] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,460] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00' +[2025-02-03 12:01:55,461] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,461] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00' +[2025-02-03 12:01:55,461] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,461] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:ACTIVEfalseeth-1/0/16PRESENToc-opt-types:SFPHISILICON OM9150 0 030SBF6TH66178900' +[2025-02-03 12:01:55,462] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,462] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEfalseeth-1/0/17PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00183038D000-50.0-40.00.0' +[2025-02-03 12:01:55,463] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,463] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00' +[2025-02-03 12:01:55,463] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,464] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEtrueeth-1/0/19PRESENT00' +[2025-02-03 12:01:55,464] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,464] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P1452000-50.0-40.00.0' +[2025-02-03 12:01:55,465] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,465] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00' +[2025-02-03 12:01:55,465] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,465] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:ACTIVEfalseeth-1/0/22PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006PS 000-2.2-3.23.12' +[2025-02-03 12:01:55,466] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,466] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:ACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPFINISAR CORP. FCLF8521P2BTL A PYA2FD5 00' +[2025-02-03 12:01:55,466] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,467] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00' +[2025-02-03 12:01:55,467] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GB' +[2025-02-03 12:01:55,467] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250017 000-50.0-1.10.0' +[2025-02-03 12:01:55,468] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,468] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00112233' +[2025-02-03 12:01:55,468] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'eth-1/0/27eth-1/0/27oc-platform-types:PORT27100G/40G Fiber4oc-eth:SPEED_100GB' +[2025-02-03 12:01:55,469] INFO:device.service.drivers.openconfig.templates.Inventory:xml_component inventario = b'Transceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORFINISAR CORP. FTLC1154SDPL-CNA0oc-opt-types:ETH_100GBASE_LR4FNSRMYU3RA0W9 0002.9-40.020.541113.5-40.018.952222.9-40.020.493332.5-40.020.13' +[2025-02-03 12:01:55,469] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:01:55,470] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:01:58,936] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 986 bytes +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,937] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,939] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,939] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1968 bytes +[2025-02-03 12:01:58,939] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,940] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,940] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,940] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 986 bytes +[2025-02-03 12:01:58,940] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 986 bytes +[2025-02-03 12:01:58,940] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "chassischassis7315-30X-O-48V-Soc-platform-types:CHASSIS7315-30X-O-48V-S7315-30X-O-48V-S7315-30X-O-48V-S2021-10-25R0B21.5.1 (9799)731530X2143013falseoc-platform-types:ACTIVEfalsechassis29.7cpucpuoc-platform-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzAccton2021-11-01v43.01.01.02CPUC-DVN-0619-ZZfalseoc-platform-types:ACTIVEfalsechassis15367220000862680000484031533000000000017385876880816000431738587700083015927Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#3Fan#3AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis9625Power-Supply#1Power-Supply#1CRXT-T0T12Boc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12BCRXT-T0T12B21030005131700000439Atrueoc-platform-types:ACTIVEfalsechassistrueAACSQg==AACwPw==AABVQg==AAC0QA==001CQA==AACCQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2056 bytes from start of buffer +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 957 bytes +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 957 bytes +[2025-02-03 12:01:58,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "AAAAAA==AAAAAA==eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT2100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#2Transceiver#2oc-platform-types:TRANSCEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00112233eth-1/0/3" +[2025-02-03 12:01:58,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1028 bytes, original size 1028 +[2025-02-03 12:01:58,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1030 bytes +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Transceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT" +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1030 bytes, original size 1030 +[2025-02-03 12:01:58,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1016 bytes +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,959] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1023 bytes +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1016 bytes +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1016 bytes +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4" +[2025-02-03 12:01:58,960] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1023 bytes, original size 1023 +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,961] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 992 bytes +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 998 bytes +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,962] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 992 bytes +[2025-02-03 12:01:58,963] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 992 bytes +[2025-02-03 12:01:58,963] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT625G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00eth-1/0/7eth-1/0/7oc-platform-types:PORT725G/10G/1G Fiber1oc-eth:SPEED_25GB" +[2025-02-03 12:01:58,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1026 bytes, original size 1026 +[2025-02-03 12:01:58,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1021 bytes +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1014 bytes +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT825G/10G/1G Fiber" +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1021 bytes, original size 1021 +[2025-02-03 12:01:58,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,969] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1028 bytes +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1021 bytes +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_25GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9eth-1/0/9oc-platform-types:PORT9" +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1028 bytes, original size 1028 +[2025-02-03 12:01:58,970] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "25G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/1" +[2025-02-03 12:01:58,971] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1031 +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,972] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1037 bytes +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,973] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0oc-platform-types:PORT1025G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT0" +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1030 +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1030 bytes, original size 1037 +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,974] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1020 bytes +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,975] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,976] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:58,976] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1007 bytes +[2025-02-03 12:01:58,976] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:INACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250012 000-50.0-1.30.0" +[2025-02-03 12:01:58,979] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1014 bytes from start of buffer +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1014 +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1014 bytes, original size 1021 +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:58,980] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,981] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1026 bytes +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1012 bytes +[2025-02-03 12:01:58,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEfalseeth-1/0/13PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD1331A02S9 000-50.0-3.20.1eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber" +[2025-02-03 12:01:58,985] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1023 bytes from start of buffer +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1023 +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1023 bytes, original size 1030 +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1030 bytes +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:58,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:58,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1023 bytes +[2025-02-03 12:01:58,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEfalseeth-1/0/15PRESENToc-opt-types:SFP" +[2025-02-03 12:01:58,991] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:58,991] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1989 bytes +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 996 bytes +[2025-02-03 12:01:58,992] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 996 bytes +[2025-02-03 12:01:58,993] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P13RE000-50.0-40.00.0eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00" +[2025-02-03 12:01:58,995] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1022 bytes, original size 1022 +[2025-02-03 12:01:58,995] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1983 bytes +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:58,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORIntel Corp AFBR-703SDZ-IN2G2AD0911A00C2 000-50.0-40.00.1eth-1/0/20eth" +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1031 +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,001] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,001] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 2047 bytes +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEtrueeth-1/0/20PRESENT0oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEfalseeth-1/0/21PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MV 000-50.0-50.00.0eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00" +[2025-02-03 12:01:59,011] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2032 bytes from start of buffer +[2025-02-03 12:01:59,012] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,012] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,012] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:59,012] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 983 bytes +[2025-02-03 12:01:59,012] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006MZ 000-50.0-2.60.0eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00" +[2025-02-03 12:01:59,015] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2031 bytes from start of buffer +[2025-02-03 12:01:59,015] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,015] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 2031 +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 2031 bytes, original size 2037 +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,016] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 994 bytes +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:59,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEtrueeth-1/0/25PRESENT00eth-1/0/26eth-1/0/26oc-platform-types:PORT2610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00eth-1/0/27eth-1/0/27oc-platform-types:PORT271G Copper1oc-eth:SPEED_1GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27falseoc-platform-types:INACTIVEtrueeth-1/0/27PRESENT00eth-1/0/28eth-1/0/28oc-platform-types:PORT281G Copper1oc-eth:SPEED_1GB" +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "Transceiver#28Transceiver#28oc-platform-types:TRANSCEIVER28falseoc-platform-types:INACTIVEtrueeth-1/0/28PRESENT00eth-1/0/29eth-1/0/29oc-platform-types:PORT291G Copper" +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2046 bytes from start of buffer +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:01:59,027] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1oc-eth:SPEED_1GBTransceiver#29Transceiver#29oc-platform-types:TRANSCEIVER29falseoc-platform-types:INACTIVEtrueeth-1/0/29PRESENT00eth-1/0/30eth-1/0/30oc-platform-types:PORT" +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1002 bytes +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "301G Copper1oc-eth:SPEED_1GBTransceiver#30Transceiver#30oc-platform-types:TRANSCEIVER30falseoc-platform-types:INACTIVEtrueeth-1/0/30PRESENT00" +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4084 bytes, original size 4084 +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4 bytes +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,028] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:59,029] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:01:59,031] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:01:59,031] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4 bytes, original size 4 +[2025-02-03 12:01:59,031] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,033] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.127:830]:Exception retrieving resource_key[#1]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:59,036] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:01:59,036] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:01:59,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-09R0D21.5.1 (9799)731527XB1952198falseoc-platform-types:ACTIVEfalsechassis34.7cpucpuoc-platf" +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis15237180000961376000443932533000000000017385834109887003011738583414997368348Fan#1Fan#1AS7315oc-platform-types:FAN1Fans tray" +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,052] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,052] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,052] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10150Fan#3Fan#3" +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,053] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,055] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,055] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1028 bytes +[2025-02-03 12:01:59,055] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "AS7315oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10325Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1028 bytes, original size 1028 +[2025-02-03 12:01:59,056] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,057] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,057] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1030 bytes +[2025-02-03 12:01:59,057] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "11200Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1030 bytes, original size 1030 +[2025-02-03 12:01:59,058] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,059] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,060] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,060] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,060] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,060] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,060] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1021 bytes +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:01:59,061] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "19430061131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AADQQA==I9tBQA==AACdQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:59,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:59,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,066] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,066] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,066] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 1029 +[2025-02-03 12:01:59,066] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1029 bytes, original size 1036 +[2025-02-03 12:01:59,066] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 3089 bytes +[2025-02-03 12:01:59,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,070] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,071] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,071] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:59,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:59,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3089 bytes, original size 3089 +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 990 bytes +[2025-02-03 12:01:59,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 990 bytes +[2025-02-03 12:01:59,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEfalseeth-1/0/6PRESENToc-opt-types:SFP" +[2025-02-03 12:01:59,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4034 bytes from start of buffer +[2025-02-03 12:01:59,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:01:59,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4034 +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4034 bytes, original size 4096 +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 62 bytes +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4158 bytes +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 993 bytes +[2025-02-03 12:01:59,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015675 000-1.9-40.03.13eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEtrueeth-1/0/7PRESENT00eth-1/0/8eth-1/0/8oc-platform-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:ACTIVEfalseeth-1/0/8PRESENToc-opt-types:SFP" +[2025-02-03 12:01:59,082] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3004 bytes from start of buffer +[2025-02-03 12:01:59,082] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,083] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,083] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 973 bytes +[2025-02-03 12:01:59,084] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 973 bytes +[2025-02-03 12:01:59,084] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTORPDDG S10G-T-80D-T 1.P22224B0404 0000.3-8.418.89eth-1/0/9eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT00eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber" +[2025-02-03 12:01:59,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,091] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,091] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:59,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:01:59,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-platform-types:ACTIVEfalseeth-1/0/11PRESENToc-opt-types:SFP" +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3076 bytes from start of buffer +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 995 bytes +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 995 bytes +[2025-02-03 12:01:59,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250018 000-1.9-4.53.48eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORAPAC Opto " +[2025-02-03 12:01:59,098] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1021 bytes from start of buffer +[2025-02-03 12:01:59,099] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,099] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,099] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,099] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:59,099] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "LS38-C3S-TC-N-D00A702021596 000-6.3-7.170.93eth-1/0/13eth-1/0/13oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13" +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2049 bytes from start of buffer +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-platform-types:TRANSCEIVER13trueoc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10G" +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3080 bytes, original size 3080 +[2025-02-03 12:01:59,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,101] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 977 bytes +[2025-02-03 12:01:59,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,103] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,103] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1970 bytes +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 977 bytes +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 977 bytes +[2025-02-03 12:01:59,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "BTransceiver#14Transceiver#14oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:INACTIVEtrueeth-1/0/16PRESENT00" +[2025-02-03 12:01:59,110] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1022 bytes, original size 1022 +[2025-02-03 12:01:59,110] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,110] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,110] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:59,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 988 bytes +[2025-02-03 12:01:59,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 982 bytes +[2025-02-03 12:01:59,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEtrueeth-1/0/17PRESENT00eth-1/0/18eth-1/0/18oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEfalseeth-1/0/19PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORFS SFP-10GSR-85 0 oc-opt-types:ETH_10GBASE_SRF1930015671 000" +[2025-02-03 12:01:59,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:01:59,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:59,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 1024 +[2025-02-03 12:01:59,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1024 bytes, original size 1030 +[2025-02-03 12:01:59,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:59,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 2006 bytes +[2025-02-03 12:01:59,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 981 bytes +[2025-02-03 12:01:59,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 981 bytes +[2025-02-03 12:01:59,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-1.9-40.03.1eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:ACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250020 000-2.1-3.23.34" +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1999 bytes from start of buffer +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 1999 +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1999 bytes, original size 2006 +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,133] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,133] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,133] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,133] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 2006 bytes +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,134] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:59,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:INACTIVEtrueeth-1/0/22PRESENT00eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:INACTIVEtrueeth-1/0/23PRESENT00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:59,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1027 bytes, original size 1027 +[2025-02-03 12:01:59,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,143] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,143] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,143] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,143] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "Transceiver#24Transceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:ACTIVEfalseeth-1/0/24PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747" +[2025-02-03 12:01:59,143] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,144] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,144] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,144] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,144] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "006N2 000-2.2-5.02.73eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25o" +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 1031 +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,148] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,149] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,150] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "c-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250016 000-1.9-50" +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,151] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,152] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,153] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,153] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,153] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,153] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = ".03.66eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVE" +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,154] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,155] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,155] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,155] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,155] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,156] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,156] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,156] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,156] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,156] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1024 bytes +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,157] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,158] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "falseeth-1/0/26PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORSmartOptics QSFP28-LR4 A1oc-opt-types:ETH_100GBASE_LR4VE2227000436 0001.4-37.042.65111" +[2025-02-03 12:01:59,158] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1024 bytes, original size 1024 +[2025-02-03 12:01:59,158] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,158] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,158] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,159] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1018 bytes +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,160] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1011 bytes +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-0.3-40.042.72220.0-40.047.63330.5-40.045.0eth-1/0/27eth-1/0/27oc-platform-types:PORT27100G/40G Fiber" +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1018 bytes, original size 1018 +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,161] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,162] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,163] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-types:LC_CONNECTORPRECISION " +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,164] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,165] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,165] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,165] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,165] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1022 bytes +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,167] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,167] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " PRE-QSFP28-LR4 00oc-opt-types:ETH_100GBASE_LR4BH211025388 0002.2-40.027.591111.9-40.027.462222.0-40.027.58" +[2025-02-03 12:01:59,167] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1022 bytes, original size 1022 +[2025-02-03 12:01:59,167] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 399 bytes +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 393 bytes +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 393 bytes +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3331.9-40.027.55" +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 399 bytes, original size 399 +[2025-02-03 12:01:59,168] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,169] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,169] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4 bytes +[2025-02-03 12:01:59,169] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,169] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:59,169] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:01:59,171] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:01:59,171] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4 bytes, original size 4 +[2025-02-03 12:01:59,171] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,172] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.126:830]:Exception retrieving resource_key[#1]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:59,173] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:01:59,173] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:01:59,652] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:01:59,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "chassischassisDRX-30oc-platform-types:CHASSISDRX-30DRX-30DRX-302020-01-08R0D21.5.1 (9799)731527XB1952144falseoc-platform-types:ACTIVEfalsechassis35.3cpucpuoc-platf" +[2025-02-03 12:01:59,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "orm-types:CPUIntel(R) Atom(TM) CPU C3508 @ 1.60GHzInfinera2020-04-0900409T00DRX-30falseoc-platform-types:ACTIVEfalsechassis151986120001018268000433932523000000000017385472802334018501738547284240214857Fan#1Fan#1AS7315oc-platform-types:FAN1Fans trayoc-platform-types:ACTIVEfalsechassis11025Fan#2Fan#2AS7315oc-platform-types:FAN2Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11025Fan#3Fan#3oc-platform-types:FAN3Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis10675Fan#4Fan#4AS7315oc-platform-types:FAN4Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis" +[2025-02-03 12:01:59,663] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:59,663] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,663] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,664] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,664] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,664] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "10500Fan#5Fan#5AS7315oc-platform-types:FAN5Fans trayAS7315AS7315trueoc-platform-types:ACTIVEfalsechassis11200Power-Supply#1Power-Supply#1CRXT-T0T12Aoc-platform-types:POWER_SUPPLY1Power Supplies trayCRXT-T0T12ACRXT-T0T12A" +[2025-02-03 12:01:59,664] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2059 bytes from start of buffer +[2025-02-03 12:01:59,664] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1014 bytes +[2025-02-03 12:01:59,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "19330053131700000390Htrueoc-platform-types:ACTIVEfalsechassistrueAACXQg==AACwPw==AABdQg==AAC8QA==YOVAQA==AACKQg==Power-Supply#2Power-Supply#2oc-platform-types:POWER_SUPPLY2Power Supplies traytrueoc-platform-types:INACTIVEfalsechassistrueAAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==AAAAAA==" +[2025-02-03 12:01:59,668] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:01:59,668] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,668] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1029 +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1029 bytes, original size 1036 +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,669] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,670] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2065 bytes +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,671] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/1eth-1/0/1oc-platform-types:PORT1100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#1Transceiver#1oc-platform-types:TRANSCEIVER1trueoc-platform-types:INACTIVEtrueeth-1/0/1PRESENT" +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:59,672] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00112233eth-1/0/2eth-1/0/2oc-platform-types:PORT225G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#2Transceiver#2oc-platform-types:TRANS" +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:01:59,673] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 2058 +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2058 bytes, original size 2065 +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,674] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,675] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,676] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "CEIVER2trueoc-platform-types:INACTIVEtrueeth-1/0/2PRESENT00eth-1/0/3eth-1/0/3oc-platform-types:PORT325G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#3Tra" +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,677] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,678] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,679] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,679] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,679] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "nsceiver#3oc-platform-types:TRANSCEIVER3trueoc-platform-types:INACTIVEtrueeth-1/0/3PRESENT00eth-1/0/4eth-1/0/4oc-platform-types:PORT425G/10G/1G Fiber1" +[2025-02-03 12:01:59,680] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:01:59,681] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,681] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,681] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 6 bytes +[2025-02-03 12:01:59,681] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,682] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,682] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,682] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:59,683] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,683] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,683] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,683] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,683] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1977 bytes +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 990 bytes +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 990 bytes +[2025-02-03 12:01:59,684] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-eth:SPEED_25GBTransceiver#4Transceiver#4oc-platform-types:TRANSCEIVER4trueoc-platform-types:INACTIVEtrueeth-1/0/4PRESENT00eth-1/0/5eth-1/0/5oc-platform-types:PORT525G/10G/1G Fiber1oc-eth:SPEED_25GBTransceiver#5Transceiver#5oc-platform-types:TRANSCEIVER5trueoc-platform-types:INACTIVEtrueeth-1/0/5PRESENT00eth-1/0/6eth-1/0/6eth-1/0/1eth-1/0/1ianaift:ethernetCsmacd1522"Conexion con XR"trueeth-1/0/1ianaift:ethernetCsmacd1522"Conexion con XR"true1UPDOWN781473656700656702688420" +[2025-02-03 12:01:59,690] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1019 bytes, original size 1019 +[2025-02-03 12:01:59,690] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,690] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,691] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1027 bytes +[2025-02-03 12:01:59,691] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,692] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,692] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,693] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1022 bytes +[2025-02-03 12:01:59,692] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,694] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,695] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,696] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,698] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,699] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,701] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns:oc-platform-types="http://openconfig.net/yang/platform-types">oc-platform-types:PORT610G/1G Fiber1oc-eth:SPEED_10GBTransceiver#6Transceiver#6oc-platform-types:TRANSCEIVER6trueoc-platform-types:INACTIVEtrueeth-1/0/6PRESENT00" +[2025-02-03 12:01:59,701] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,702] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1027 bytes, original size 1027 +[2025-02-03 12:01:59,704] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,706] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,706] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "420oc-eth:SPEED_100GB98:19:2C:5E:85:010000004265670000" +[2025-02-03 12:01:59,710] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,711] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1022 bytes, original size 1022 +[2025-02-03 12:01:59,714] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:01:59,716] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,717] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,717] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,719] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,721] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:01:59,721] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,723] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,726] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,727] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,728] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,729] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,729] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/7eth-1/0/7oc-platform-types:PORT710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#7Transceiver#7oc-platform-types:TRANSCEIVER7trueoc-platform-types:INACTIVEfalseeth-1/0/7" +[2025-02-03 12:01:59,729] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:59,730] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1030 bytes from start of buffer +[2025-02-03 12:01:59,731] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1018 bytes +[2025-02-03 12:01:59,731] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,732] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFeth-1/0/2eth-1/0/2ianaift:ethernetCsmacdfalse" +[2025-02-03 12:01:59,733] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,733] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:01:59,734] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,734] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,735] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,737] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,737] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00125143N000-50.0-40.00.0eth-1/0/8eth-1/0/8oc-platform" +[2025-02-03 12:01:59,738] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,739] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2061 bytes from start of buffer +[2025-02-03 12:01:59,740] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,741] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,741] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/2ianaift:ethernetCsmacd1600false2DOWNDOWN00000000000oc-eth:SPEED_100GB98:19:2C:5E:85:02000" +[2025-02-03 12:01:59,742] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,742] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2047 bytes from start of buffer +[2025-02-03 12:01:59,742] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:59,744] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,744] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:01:59,745] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,745] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "-types:PORT810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#8Transceiver#8oc-platform-types:TRANSCEIVER8trueoc-platform-types:INACTIVEtrueeth-1/0/8PRESENT00eth-1/0/9" +[2025-02-03 12:01:59,746] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,746] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3087 bytes from start of buffer +[2025-02-03 12:01:59,746] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,747] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,747] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100N" +[2025-02-03 12:01:59,748] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,749] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3078 bytes from start of buffer +[2025-02-03 12:01:59,749] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,750] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,751] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,752] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,752] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3087 +[2025-02-03 12:01:59,753] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,754] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3087 bytes, original size 4096 +[2025-02-03 12:01:59,755] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,755] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,756] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 3078 +[2025-02-03 12:01:59,756] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 3078 bytes, original size 4096 +[2025-02-03 12:01:59,758] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1009 bytes +[2025-02-03 12:01:59,758] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,759] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,760] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,761] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,761] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1018 bytes +[2025-02-03 12:01:59,763] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,764] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,765] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,765] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,766] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,766] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,767] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,767] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,767] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,767] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,768] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,768] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,769] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,769] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,770] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 5105 bytes +[2025-02-03 12:01:59,770] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,771] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,772] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,772] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,772] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 5114 bytes +[2025-02-03 12:01:59,773] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,774] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,774] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,774] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,778] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,778] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/9oc-platform-types:PORT910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#9Transceiver#9oc-platform-types:TRANSCEIVER9trueoc-platform-types:INACTIVEtrueeth-1/0/9PRESENT0" +[2025-02-03 12:01:59,778] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:59,778] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,778] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,780] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1014 bytes +[2025-02-03 12:01:59,780] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1014 bytes +[2025-02-03 12:01:59,780] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,780] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "NIeth qsfp0falseOFFeth-1/0/3eth-1/0/3ianaift:ethernetCsmacdtrueeth-1/0/3ianaift:ethernetCsmacd1600true3UPDOWN0000000" +[2025-02-03 12:01:59,780] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,781] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1021 bytes from start of buffer +[2025-02-03 12:01:59,781] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,781] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,781] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0eth-1/0/10eth-1/0/10oc-platform-types:PORT1010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#10Transceiver#10oc-platform-types:TRANSCEIVER10trueoc-platform-types:INACTIVEtrueeth-1/0/10oc-eth:SPEED_10GBoc-eth:SPEED_10GB98:19:2C:5E:85:0300000000" +[2025-02-03 12:01:59,783] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,783] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2038 bytes from start of buffer +[2025-02-03 12:01:59,783] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:59,783] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,783] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns="http://openconfig.net/yang/platform/transceiver">PRESENT00eth-1/0/11eth-1/0/11oc-platform-types:PORT1110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#11Transceiver#11oc-platform-types:TRANSCEIVER11trueoc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFF" +[2025-02-03 12:01:59,785] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:59,785] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3065 bytes from start of buffer +[2025-02-03 12:01:59,785] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1002 bytes +[2025-02-03 12:01:59,785] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,785] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns:oc-platform-types="http://openconfig.net/yang/platform-types">oc-platform-types:INACTIVEtrueeth-1/0/11PRESENT00eth-1/0/12eth-1/0/12oc-platform-types:PORT1210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#12Transceiver#12ianaift:ethernetCsmacdtrueeth-1/0/4ianaift:ethernetCsmacd1600true4UPDOWN00000000000oc-eth:SPEED_10GB" +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4090 bytes from start of buffer +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns:oc-platform-types="http://openconfig.net/yang/platform-types">oc-platform-types:TRANSCEIVER12trueoc-platform-types:ACTIVEfalseeth-1/0/12PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORCISCO-ACCELINK RTXM228-401-C981.oc-opt-types:ETH_10GBASE_LRACW2607096J 000" +[2025-02-03 12:01:59,787] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 5076 bytes from start of buffer +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 982 bytes +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,788] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-eth:SPEED_10GB98:19:2C:5E:85:04000000000000oc-platform-types:PORT1310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#13Transceiver#13oc-platform-types:TRANSCEIVER13trueoc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/5eth-1/0/5ianaift:ethernetCsmacdfalseeth-1/0/5ianaift:ethernetCsmacd160" +[2025-02-03 12:01:59,797] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,797] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,797] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1002 bytes +[2025-02-03 12:01:59,798] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,798] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1002 bytes +[2025-02-03 12:01:59,798] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,798] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns:oc-platform-types="http://openconfig.net/yang/platform-types">oc-platform-types:INACTIVEtrueeth-1/0/13PRESENT00eth-1/0/14eth-1/0/14oc-platform-types:PORT1410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#14Transceiver#14oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:0500000oc-platform-types:TRANSCEIVER14trueoc-platform-types:INACTIVEtrueeth-1/0/14PRESENT00eth-1/0/15eth-1/0/15oc-platform-types:PORT1510G/1G Fiber1oc-eth:SPEED_10GB" +[2025-02-03 12:01:59,801] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,801] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3024 bytes from start of buffer +[2025-02-03 12:01:59,801] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,801] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces">0000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe25" +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3034 bytes from start of buffer +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,802] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,803] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#15Transceiver#15oc-platform-types:TRANSCEIVER15trueoc-platform-types:INACTIVEtrueeth-1/0/15PRESENT00eth-1/0/16eth-1/0/16oc-platform-types:PORT1610G/1G Fiber" +[2025-02-03 12:01:59,803] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,803] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4048 bytes from start of buffer +[2025-02-03 12:01:59,803] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,803] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0falseOFFeth-1/0/6eth-1/0/6ianaift:ethernetCsmacdfalseeth-1/0/6ianaift:ethernetCsmacd1600false6DOWNDOWN000000000" +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4065 bytes from start of buffer +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,804] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4048 +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4048 bytes, original size 4125 +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 998 bytes +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,805] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,806] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4065 +[2025-02-03 12:01:59,806] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 77 bytes +[2025-02-03 12:01:59,806] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4065 bytes, original size 4132 +[2025-02-03 12:01:59,806] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,806] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 67 bytes +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:59,807] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 998 bytes +[2025-02-03 12:01:59,808] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,809] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,809] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,809] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,809] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4173 bytes +[2025-02-03 12:01:59,809] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,810] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4163 bytes +[2025-02-03 12:01:59,811] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:01:59,811] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,811] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1018 bytes +[2025-02-03 12:01:59,811] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,811] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1oc-eth:SPEED_10GBTransceiver#16Transceiver#16oc-platform-types:TRANSCEIVER16trueoc-platform-types:ACTIVEfalseeth-1/0/16PRESENToc-opt-types:SFPHISILICON OM9150 0 030SBF6TH66178900" +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 998 bytes +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 998 bytes +[2025-02-03 12:01:59,812] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,813] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00oc-eth:SPEED_10GBoc-eth:SPEED_10GB98:19:2C:5E:85:060000000000" +[2025-02-03 12:01:59,813] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 992 bytes +[2025-02-03 12:01:59,813] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1004 bytes from start of buffer +[2025-02-03 12:01:59,813] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 992 bytes +[2025-02-03 12:01:59,813] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,814] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/17eth-1/0/17oc-platform-types:PORT1710G/1G Fiber1oc-eth:SPEED_10GBTransceiver#17Transceiver#17oc-platform-types:TRANSCEIVER17trueoc-platform-types:INACTIVEfalseeth-1/0/17oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/7eth-1/0/7PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG00183038D000-50.0-40.00.0eth-1/0/18eth-1/0/18ianaift:ethernetCsmacdfalseeth-1/0/7ianaift:ethernetCsmacd1600false7DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:07" +[2025-02-03 12:01:59,817] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1015 bytes +[2025-02-03 12:01:59,817] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3061 bytes from start of buffer +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1015 bytes +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns:oc-platform-types="http://openconfig.net/yang/platform-types">oc-platform-types:PORT1810G/1G Fiber1oc-eth:SPEED_10GBTransceiver#18Transceiver#18oc-platform-types:TRANSCEIVER18trueoc-platform-types:INACTIVEtrueeth-1/0/18PRESENT00" +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4055 bytes from start of buffer +[2025-02-03 12:01:59,818] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,819] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,820] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,819] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,821] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,821] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000000000000oc-vlan-types:TPID_0X8100oc-vlan-" +[2025-02-03 12:01:59,821] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,822] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4092 bytes from start of buffer +[2025-02-03 12:01:59,823] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4055 +[2025-02-03 12:01:59,823] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,824] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,824] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4092 +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4092 bytes, original size 4163 +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 71 bytes +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,825] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,823] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4055 bytes, original size 4173 +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 118 bytes +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,828] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4214 bytes +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:59,829] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/19eth-1/0/19oc-platform-types:PORT1910G/1G Fiber1oc-eth:SPEED_10GBTransceiver#19Transceiver#19oc-platform-types:TRANSCEIVER19trueoc-platform-types:INACTIVEtrueeth-1/0/19PRESENT00eth-1/0/20eth-1/0/20oc-platform-types:PORT2010G/1G Fiber1oc-eth:SPEED_10GBTransceiver#20Transceiver#20oc-platform-types:TRANSCEIVER20trueoc-platform-types:INACTIVEfalseeth-1/0/20PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORDELL EMC WTRD1 A1oc-opt-types:ETH_10GBASE_SRCN04HG0018P1452000-50.0-40.00.0" +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2991 bytes from start of buffer +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1011 bytes +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1011 bytes +[2025-02-03 12:01:59,830] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/21eth-1/0/21oc-platform-types:PORT2110G/1G Fiber1oc-eth:SPEED_10GBTransceiver#21Transceiver#21oc-platform-types:TRANSCEIVER21trueoc-platform-types:INACTIVEtrueeth-1/0/21NNIeth xe250falseOFFeth-1/0/8eth-1/0/8ianaift:ethernetCsmacdfalseeth-1/0/8ianaift:ethernetCsmacd1600false8DOWNDOWN0000" +[2025-02-03 12:01:59,832] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:59,832] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,832] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:08000000000" +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2055 bytes from start of buffer +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFet" +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3086 bytes from start of buffer +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "h-1/0/9eth-1/0/9ianaift:ethernetCsmacdfalseeth-1/0/9ianaift:ethernetCsmacd1600false9DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:" +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4117 bytes from start of buffer +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,833] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4117 +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4117 bytes, original size 4167 +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 50 bytes +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4146 bytes +[2025-02-03 12:01:59,834] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1004 bytes +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "09000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/10eth-1/0/10ianaift:ethernetCsmacdfalseeth-1/0/10ianaift:ethernetCsmacd1600false10DOWNDOWN0" +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2036 bytes from start of buffer +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,835] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:0A0000000" +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3060 bytes from start of buffer +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 985 bytes +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 985 bytes +[2025-02-03 12:01:59,836] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/11eth-1/0/11ianaift:ethernetCsmacd"Conexion con HL4-2-1"falseeth-1/0/11ianaift:ethernetCsmacd1600"Conexion con HL4-2-1"false11DOWNDOWN00000000000" +[2025-02-03 12:01:59,837] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:59,837] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 975 bytes +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 975 bytes +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-eth:SPEED_10GB98:19:2C:5E:85:0B000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/12eth-1/0/12ianaift:ethernetCsmacd"Conexion con HL5-3-1"falseeth-" +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3039 bytes from start of buffer +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1006 bytes +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1006 bytes +[2025-02-03 12:01:59,838] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1/0/12ianaift:ethernetCsmacd1600"Conexion con HL5-3-1"false12DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:0C000" +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4052 bytes from start of buffer +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 978 bytes +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4052 +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4052 bytes, original size 4191 +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 139 bytes +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 978 bytes +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,839] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,832] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 982 bytes +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 982 bytes +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns="http://openconfig.net/yang/platform/transceiver">PRESENT00eth-1/0/22eth-1/0/22oc-platform-types:PORT2210G/1G Fiber1oc-eth:SPEED_10GBTransceiver#22Transceiver#22oc-platform-types:TRANSCEIVER22trueoc-platform-types:ACTIVEfalseeth-1/0/22PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTORArista NetworksSFP-10G-SR 20oc-opt-types:ETH_10GBASE_SRACW1747006PS 000-2.2-3.23.12" +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2000 bytes from start of buffer +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,844] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,845] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:01:59,845] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1010 bytes +[2025-02-03 12:01:59,845] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/23eth-1/0/23oc-platform-types:PORT2310G/1G Fiber1oc-eth:SPEED_10GBTransceiver#23Transceiver#23oc-platform-types:TRANSCEIVER23trueoc-platform-types:ACTIVEfalseeth-1/0/23PRESENToc-opt-types:SFPFINISAR CORP. FCLF8521P2BTL A PYA2FD5 00eth-1/0/24eth-1/0/24oc-platform-types:PORT2410G/1G Fiber1oc-eth:SPEED_10GBTransceiver#24oc-platform-types:TRANSCEIVER24trueoc-platform-types:INACTIVEtrueeth-1/0/24PRESENT00eth-1/0/25eth-1/0/25oc-platform-types:PORT2510G/1G Fiber1oc-eth:SPEED_10GBTransceiver#25Transceiver#25oc-platform-types:TRANSCEIVER25trueoc-platform-types:INACTIVEfalseeth-1/0/25PRESENToc-opt-types:SFPoc-opt-types:LC_CONNECTOREdgecore ET5402-SR 00oc-opt-types:ETH_10GBASE_SRF162250017 000-50.0-1.10.0eth-1/0/26eth-1/0/26oc-platform-types:PORT26100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#26" +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3008 bytes from start of buffer +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "Transceiver#26oc-platform-types:TRANSCEIVER26trueoc-platform-types:INACTIVEtrueeth-1/0/26PRESENT00112233eth-1/0/27eth-1/0/27oc-platform-types:PORT27" +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4038 bytes from start of buffer +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4038 +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4038 bytes, original size 4349 +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,848] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 311 bytes +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2511 bytes +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "100G/40G Fiber4oc-eth:SPEED_100GBTransceiver#27Transceiver#27oc-platform-types:TRANSCEIVER27trueoc-platform-types:INACTIVEfalseeth-1/0/27PRESENToc-opt-types:QSFP28oc-opt-ty" +[2025-02-03 12:01:59,849] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1022 bytes +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1022 bytes +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "pes:LC_CONNECTORFINISAR CORP. FTLC1154SDPL-CNA0oc-opt-types:ETH_100GBASE_LR4FNSRMYU3RA0W9 0002.9-40.020.541113.5-40.018.952222.9-40.0" +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2060 bytes from start of buffer +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 441 bytes +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 441 bytes +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "20.493332.5-40.020.13" +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2507 bytes from start of buffer +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:01:59,850] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:01:59,840] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,853] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4235 bytes +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 978 bytes +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 978 bytes +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/13eth-1/0/13ianaift:ethernetCsmacdfalseeth-1/0/13ianaift:ethernetCsmacd1600false13DOWNDOWN708078033" +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2000 bytes from start of buffer +[2025-02-03 12:01:59,854] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1001 bytes +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1001 bytes +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "45000000oc-eth:SPEED_10GB98:19:2C:5E:85:0D000000343410" +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3008 bytes from start of buffer +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-" +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4039 bytes from start of buffer +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,855] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4039 +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4039 bytes, original size 4235 +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 196 bytes +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4292 bytes +[2025-02-03 12:01:59,856] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1/0/14eth-1/0/14ianaift:ethernetCsmacdfalseeth-1/0/14ianaift:ethernetCsmacd1600false14DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:0" +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1003 bytes +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1003 bytes +[2025-02-03 12:01:59,857] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "E000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/15eth-1/0/15ianaift:ethernetCsmacdfalseeth-1/0/15ianaift:ethernetCsmacd1600false15DOWNDOWN0oc-eth:SPEED_10GB98:19:2C:5E:85:0F0000000" +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4085 bytes from start of buffer +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4085 +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4085 bytes, original size 4292 +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 207 bytes +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,858] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,859] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:59,859] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,859] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,859] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,859] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4303 bytes +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 983 bytes +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/16eth-1/0/16ianaift:ethernetCsmacd1522"Conexion con IPM"falseeth-1/0/16ianaift:ethernetCsmacd1522"Conexion con IPM"false16DOWNDOWN1920170017000000" +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2020 bytes from start of buffer +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,860] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,861] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 984 bytes +[2025-02-03 12:01:59,862] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 984 bytes +[2025-02-03 12:01:59,862] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-eth:SPEED_10GB98:19:2C:5E:85:100000000150200oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/17eth-1/0/17ianaift:ethernetCsmacdfalseeth-1/0/17 +[2025-02-03 12:01:59,863] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2511 bytes, original size 2511 +[2025-02-03 12:01:59,863] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:59,865] ERROR:device.service.drivers.openconfig.OpenConfigDriver:[10.95.90.125:830]:Exception retrieving resource_key[#1]: __endpoints__ +Traceback (most recent call last): + File "/var/teraflow/device/service/drivers/openconfig/OpenConfigDriver.py", line 326, in GetConfig + results.extend(parse(resource_key, xml_data)) + File "/var/teraflow/device/service/drivers/openconfig/templates/__init__.py", line 86, in parse + return parser(xml_data) +TypeError: parse() missing 1 required positional argument: 'device_sap' +[2025-02-03 12:01:59,867] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:01:59,866] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,868] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:01:59,865] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:01:59,868] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4009 +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4009 bytes, original size 4303 +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 294 bytes +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,869] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4390 bytes +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1009 bytes +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1009 bytes +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd1600false17DOWNDOWN00000000000oc-eth:SPEED_1GBoc-eth:SPEED_1GB98:19:2C:5E:85:110" +[2025-02-03 12:01:59,870] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1016 bytes from start of buffer +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1019 bytes +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100" +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1006 bytes +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1006 bytes +[2025-02-03 12:01:59,871] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "NNIeth xe0falseOFFeth-1/0/18eth-1/0/18ianaift:ethernetCsmacdfalseeth-1/0/18ianaift:ethernetCsmacd1600false18DOWNDOWN0000" +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3055 bytes from start of buffer +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,872] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0000000oc-eth:SPEED_10GB98:19:2C:5E:85:12000000000" +[2025-02-03 12:01:59,873] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4079 bytes from start of buffer +[2025-02-03 12:01:59,873] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,873] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,873] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,874] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,874] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 7 bytes +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,874] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,875] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4079 +[2025-02-03 12:01:59,876] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,876] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4079 bytes, original size 4390 +[2025-02-03 12:01:59,877] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,877] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,877] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1024 bytes +[2025-02-03 12:01:59,877] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,878] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,878] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 311 bytes +[2025-02-03 12:01:59,878] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,878] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,878] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,879] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,879] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,879] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,879] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,880] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,880] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/1eth-1/0/1ianaift:ethernetCsmacdtestingtrueeth-1/0/1ianaift:ethernetCsmacd1600testingtrue1UPDOWN00000010549651259941200" +[2025-02-03 12:01:59,880] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,881] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1024 bytes, original size 1024 +[2025-02-03 12:01:59,882] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,883] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,883] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,883] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,884] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,884] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:01:59,884] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4407 bytes +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,884] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,885] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,886] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,886] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:59,886] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,886] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1007 bytes +[2025-02-03 12:01:59,887] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "599412oc-eth:SPEED_100GB1C:EA:0B:00:8A:8100000000599412000" +[2025-02-03 12:01:59,887] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1014 bytes from start of buffer +[2025-02-03 12:01:59,887] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,887] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-" +[2025-02-03 12:01:59,888] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,888] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,889] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:59,890] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,890] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1019 bytes +[2025-02-03 12:01:59,890] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,890] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFeth-1/0/2eth-1/0/2ianaift:ethernetCsmacdtrueeth-1/0/2" +[2025-02-03 12:01:59,890] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,891] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2040 bytes from start of buffer +[2025-02-03 12:01:59,893] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,893] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,893] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "1/0/19eth-1/0/19ianaift:ethernetCsmacdfalseeth-1/0/19ianaift:ethernetCsmacd1600false19DOWNDOWN6612190019000000oc-eth:SPEED_10GB98:19:2C:5E" +[2025-02-03 12:01:59,894] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,894] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:01:59,894] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,896] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,896] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1004 bytes +[2025-02-03 12:01:59,897] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,897] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "ianaift:ethernetCsmacd1600true2UPDOWN00000000000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:8A:820000" +[2025-02-03 12:01:59,898] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1008 bytes +[2025-02-03 12:01:59,898] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3051 bytes from start of buffer +[2025-02-03 12:01:59,898] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1008 bytes +[2025-02-03 12:01:59,898] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,898] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = ":85:13000000448000oc-vlan-types:TPID_0X81000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIoc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/20eth-1/0/20ianaift:ethernetCsmacdfalseeth-1/0/20ianaift:ethernetCsmacd1600false20DOWNDOWN0eth xe250falseOFFeth-1/0/3eth-1/0/3ianaift:ethernetCsmacdtrueeth-1/0/3ianaift:ethernetCsmacd1600true3UPDOWN00000000" +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1004 bytes +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1006 bytes +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:8A:8300000000000" +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = ">0000000000oc-eth:SPEED_10GB98:19:2C:5E:85:140000000" +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1013 bytes from start of buffer +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,930] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2039 bytes from start of buffer +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 983 bytes +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 983 bytes +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/4eth-1/0/4ia" +[2025-02-03 12:01:59,932] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3070 bytes from start of buffer +[2025-02-03 12:01:59,931] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseianaift:ethernetCsmacd1600true4UPDOWN00000000000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:8A:8400" +[2025-02-03 12:01:59,933] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1005 bytes +[2025-02-03 12:01:59,933] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4081 bytes from start of buffer +[2025-02-03 12:01:59,933] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-ports">OFFeth-1/0/21eth-1/0/21ianaift:ethernetCsmacd"TeraFlow"falseeth-1/0/21ianaift:ethernetCsmacd1600"TeraFlow"false21DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:150000000000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/5eth-1/0/5ianaift:ethernetCsmacd"Conexion con Spirent"trueeth-1/0/5ianaift:ethernetCsmacd1600"Conexion con Spirent"true5UPDOWN000" +[2025-02-03 12:01:59,942] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces" xmlns:oc-vlan-types="http://openconfig.net/yang/vlan-types">oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/22eth-1/0/22ianaift:ethernetCsmacdfalseeth-1/0/22oc-eth:SPEED_10GBoc-eth:SPEED_10GB1C:EA:0B:00:8A:85000000ianaift:ethernetCsmacd1600false22DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:160000" +[2025-02-03 12:01:59,943] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2020 bytes from start of buffer +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1010 bytes +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 999 bytes +[2025-02-03 12:01:59,944] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1010 bytes +[2025-02-03 12:01:59,945] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 999 bytes +[2025-02-03 12:01:59,945] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://openconfig.net/yang/interfaces/ethernet-ext">00752860000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe2500000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/23eth-1/0/23ianaift:ethernetCsmacdfalseeth-1/0/23ianaift:ethernetCsmacd1600false23DOWNDOWN10451104700" +[2025-02-03 12:01:59,946] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4092 bytes, original size 4129 +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4052 bytes from start of buffer +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 37 bytes +[2025-02-03 12:01:59,947] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4052 +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4052 bytes, original size 4505 +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,948] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 453 bytes +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:01:59,949] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4133 bytes +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1012 bytes +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,950] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,951] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-ports">falseOFFeth-1/0/6eth-1/0/6ianaift:ethernetCsmacdtrueeth-1/0/6ianaift:ethernetCsmacd1600true6UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:86000000000000oc-eth:SPEED_10GB98:19:2C:5E:85:1700000024500" +[2025-02-03 12:01:59,953] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2000 bytes from start of buffer +[2025-02-03 12:01:59,953] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1019 bytes from start of buffer +[2025-02-03 12:01:59,953] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 989 bytes +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 989 bytes +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,954] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces" xmlns:oc-vlan-types="http://openconfig.net/yang/vlan-types">oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/7eth-1/0/7ianaift:ethernetCsmacdtrueeth-1/0/7oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/24eth-1/0/24ia" +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2995 bytes from start of buffer +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2050 bytes from start of buffer +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,955] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1007 bytes +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1007 bytes +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd1600true7UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:870000ianaift:ethernetCsmacd1600false24DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:1800" +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4026 bytes from start of buffer +[2025-02-03 12:01:59,956] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3064 bytes from start of buffer +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 985 bytes +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1019 bytes +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,957] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1019 bytes +[2025-02-03 12:01:59,958] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4026 +[2025-02-03 12:01:59,958] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X81000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/8eth-1/0/8ianaift:ethernetCsmacdtrueeth-1/0/8ianaift:ethernetCsmacd1600true8UPUP3922721062074619139153125757067789600" +[2025-02-03 12:01:59,964] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces">NNIeth xe0falseOFFeth-1/0/25eth-1/0/25ianaift:ethernetCsmacdfalseeth-1/0/25ianaift:ethernetCsmacd1600false25DOWNDOWN00000" +[2025-02-03 12:01:59,964] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2021 bytes from start of buffer +[2025-02-03 12:01:59,964] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,964] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1004 bytes +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1004 bytes +[2025-02-03 12:01:59,965] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0000oc-eth:SPEED_10GB1C:EA:0B:00:8A:88000000128999232591311486100853" +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "000000oc-eth:SPEED_10GB98:19:2C:5E:85:19000000000" +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3045 bytes from start of buffer +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,966] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 998 bytes +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 998 bytes +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3007533200oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/9eth-1/0/9oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/26" +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4049 bytes from start of buffer +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3073 bytes from start of buffer +[2025-02-03 12:01:59,967] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4049 +[2025-02-03 12:01:59,968] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/26ianaift:ethernetCsmacdfalseeth-1/0/26ianaift:ethernetCsmacd1600false26DOWNDOWN00000000000oc-eth:SPEED_10GB98:19:2C:5E:85:1A0000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/27eth-1/0/27ianaift:ethernetCsmacdfalseeth-1/0/27ianaift:ethernetCsmacd1600false27DOWNDOWN0ianaift:ethernetCsmacd"Conexion con AGS_20-1"trueeth-1/0/9ianaift:ethernetCsmacd1600"Conexion con AGS_20-1"true9UPDOWN00000013099764075286000752860oc-eth:SPEED_" +[2025-02-03 12:01:59,982] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = ">0000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:1B0000000" +[2025-02-03 12:01:59,982] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:01:59,983] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3029 bytes from start of buffer +[2025-02-03 12:01:59,983] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,983] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,983] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,983] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,984] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 994 bytes +[2025-02-03 12:01:59,984] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 985 bytes +[2025-02-03 12:01:59,984] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 994 bytes +[2025-02-03 12:01:59,984] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 985 bytes +[2025-02-03 12:01:59,984] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "10GB1C:EA:0B:00:8A:8900000000752860000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth gecp0falseoc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/10eth-1/0/10ianaift:ethernetCsmacd"Conexion con HL3-1-2"trueeth-1/0/10ianaift:ethernetCsmacd1600"Conexion con HL3-1-2"" +[2025-02-03 12:01:59,986] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4020 +[2025-02-03 12:01:59,986] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3057 bytes from start of buffer +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4020 bytes, original size 4547 +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:01:59,987] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 968 bytes +[2025-02-03 12:01:59,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 527 bytes +[2025-02-03 12:01:59,988] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 968 bytes +[2025-02-03 12:01:59,988] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,988] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "true10UPDOWN24548008013250581475286800752868oc-eth:SPEED_10GB1C:EA:0B:00:8A:8A00000OFFeth-1/0/28eth-1/0/28ianaift:ethernetCsmacdfalseeth-1/0/28ianaift:ethernetCsmacd1600false28DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:1C000000000000oc-vl" +[2025-02-03 12:01:59,995] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:01:59,995] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2057 bytes from start of buffer +[2025-02-03 12:01:59,995] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,995] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1017 bytes +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:01:59,996] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1017 bytes +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces">042752868000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe" +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "an-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth gecp0falseOFFeth-1/0/29eth-1/0/29ianaift:ethernetCsmacdfalseeth-1/0/29ianaift:ethernetCsmacd1600false29" +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3081 bytes from start of buffer +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,997] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:01:59,998] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:01:59,998] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:01:59,999] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:01:59,999] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:01:59,999] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1023 bytes +[2025-02-03 12:01:59,999] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,000] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0falseOFFeth-1/0/11eth-1/0/11ianaift:ethernetCsmacdtrueeth-1/0/11ianaift:ethernetCsmacd1600true11UPUP757762621732965302873296250000" +[2025-02-03 12:02:00,000] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:1D000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:8B000000259743047322230000" +[2025-02-03 12:02:00,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4109 +[2025-02-03 12:02:00,002] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3085 bytes from start of buffer +[2025-02-03 12:02:00,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4109 bytes, original size 4623 +[2025-02-03 12:02:00,002] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,002] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 514 bytes +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,003] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/12eth-1/0/12ianaift:ethernetCsmacdtrue" +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4109 bytes from start of buffer +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1005 bytes +[2025-02-03 12:02:00,004] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4109 +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,005] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4109 bytes, original size 4315 +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4610 bytes +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,006] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 206 bytes +[2025-02-03 12:02:00,007] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,007] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,007] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,007] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1005 bytes +[2025-02-03 12:02:00,007] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,008] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1005 bytes +[2025-02-03 12:02:00,008] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,008] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://openconfig.net/yang/interfaces/ethernet-ext">000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth gecp0falseOFFeth-1/0/30eth-1/0/30ianaift:ethernetCsmacdfalseeth-1/0/30ianaift:ethernetCsmacd1600false30DOWNDOWN00000000000" +[2025-02-03 12:02:00,009] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2039 bytes from start of buffer +[2025-02-03 12:02:00,008] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,009] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,009] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,009] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,009] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,010] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 978 bytes +[2025-02-03 12:02:00,010] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,010] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 978 bytes +[2025-02-03 12:02:00,010] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,010] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "oc-eth:SPEED_UNKNOWN98:19:2C:5E:85:1E000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth gecp0falseOFFeth0eth0ianaift:ethernetCsmacdtrueeth0ianaift:ethernetCsmacd1600true12UPUP17515251120578998916719938700919667100109990200oc-eth:SPEED_1GBoc-eth:SPEED_1GB1C:EA:0B:00:8A:8C" +[2025-02-03 12:02:00,013] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,013] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:02:00,013] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,013] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 972 bytes +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4005 +[2025-02-03 12:02:00,014] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,015] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4005 bytes, original size 4610 +[2025-02-03 12:02:00,015] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0000001371636223643581628044oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/13eth-1/0/13ianaift:ethernetCsmacdtrueeth-1/0/13ianaift:ethernetCsmacd1600true13UPDOWN00" +[2025-02-03 12:02:00,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 972 bytes +[2025-02-03 12:02:00,017] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3076 bytes from start of buffer +[2025-02-03 12:02:00,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,017] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,017] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1004 bytes +[2025-02-03 12:02:00,018] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:8D0000000" +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4701 bytes +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4087 bytes from start of buffer +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,019] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 983 bytes +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 972 bytes +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 972 bytes +[2025-02-03 12:02:00,020] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4087 +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4087 bytes, original size 4302 +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 215 bytes +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,021] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd1500true8705UPUP000
10.95.90.12710.95.90.1272410.95.90.12724
false
falsefalse
dummy1dummy1ianaift:softwareLoopbacktruedummy1ianaift:softwareLoopback1500true8709UPUP000
5.5.5.65.5.5.6325.5.5.632
eth-1/0/1.246eth-1/0/1.246ianaift:l3ipvlan1522Pruebas XRtrue" +[2025-02-03 12:02:00,022] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 983 bytes +[2025-02-03 12:02:00,022] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2003 bytes from start of buffer +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,023] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/1.246ianaift:l3ipvlan1522Pruebas XRtrue18216UPDOWN000
172.16.2.1172.16.2.124172.16.2.124
false
falsefalse246" +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4311 bytes +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3028 bytes from start of buffer +[2025-02-03 12:02:00,024] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,025] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 983 bytes +[2025-02-03 12:02:00,026] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,026] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 983 bytes +[2025-02-03 12:02:00,026] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "246
eth-1/0/2.357eth-1/0/2.357ianaift:l3ipvlanPruebas XRtrueeth-1/0/2.357ianaift:l3ipvlan1500Pruebas XRtrue51095UPDOWN000
172.16.3.1172.16.3.124172.16.3.124
f" +[2025-02-03 12:02:00,026] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFF
eth-1/0/14eth-1/0/14ianaift:ethernetCsmacdtrueeth-1/0/14ianaift:ethernetCsmacd1600true14UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:8E000000000000oc-vlan-" +[2025-02-03 12:02:00,030] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,030] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3042 bytes from start of buffer +[2025-02-03 12:02:00,030] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,031] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/15eth-1/0/15ianaift:ethernetCsmacdtrueeth-1/0/15ianaift:ethernetCsmacd1600true15" +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4069 bytes from start of buffer +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,032] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4738 bytes +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1006 bytes +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,033] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4069 +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4069 bytes, original size 4311 +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,034] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "alsefalsefalse357357eth-1/0/11.55eth-1/0/11.55ianaift:l3ipvlan1555trueeth-1/0/11.55ianaift:l3ipvlan1555true345705UPDOWN00" +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 242 bytes +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:02:00,035] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1008 bytes +[2025-02-03 12:02:00,036] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1006 bytes +[2025-02-03 12:02:00,037] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1008 bytes +[2025-02-03 12:02:00,037] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,037] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "0
98.5.55.498.5.55.42498.5.55.424
false
2001::98:5:55:42001::98:5:55:41122001::98:5:55:4112
truefalsetruefe80::9a19:2cff:fe5e:850064
5555
eth-1/0/12.42eth-1/0/12.42ianaift:l3ipvlantrueeth-1/0/12.42ianaift:l3ipvlan1500true378460UPDOWN000
98.4.42.598.4.42.524" +[2025-02-03 12:02:00,039] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,039] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,039] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1006 bytes +[2025-02-03 12:02:00,039] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1006 bytes +[2025-02-03 12:02:00,039] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:8F000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/16eth-1/0/16ianaift:ethernetCsmacdtrueeth-1/0/16ianaift:ethernetCsmacd1600true16UPDOWN00000000000" +[2025-02-03 12:02:00,040] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3046 bytes from start of buffer +[2025-02-03 12:02:00,041] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,041] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,041] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 975 bytes +[2025-02-03 12:02:00,041] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 975 bytes +[2025-02-03 12:02:00,041] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-eth:SPEED_10GB1C:EA:0B:00:8A:90000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/17eth-1/0/17ianaift:ethernetCsmacdtrueeth-1/0/17ianaift:ethernetCsmacd1600true17UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:910000" +[2025-02-03 12:02:00,045] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2016 bytes from start of buffer +[2025-02-03 12:02:00,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 999 bytes +[2025-02-03 12:02:00,046] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/18eth-1/0/18ianaift:ethernetCsmacdtrueeth-1/0/18ianaift:ethernetCsmacd1600true18UPDOWN679791203862450038624500" +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4044 bytes from start of buffer +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1002 bytes +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4044 +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4044 bytes, original size 4407 +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,047] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 363 bytes +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1002 bytes +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,044] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,048] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4459 bytes +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1002 bytes +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1002 bytes +[2025-02-03 12:02:00,049] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0000oc-eth:SPEED_10GB1C:EA:0B:00:8A:92000000003862450" +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1009 bytes from start of buffer +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 992 bytes +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 992 bytes +[2025-02-03 12:02:00,050] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/19eth-1/0/19ianaift:ethernetCsmacd"Conexion con HL5-4-1"trueeth-1/0/19ianaift:ethernetCsmacd1600"Conexion con HL5-4-1"true19UPDOWN21321190594310233004310233022624506425062992005062992
2001::98:4:42:52001::98:4:42:51122001::98:4:42:5112
truefalsetruefe80::9a19:2cff:fe5e:85006442" +[2025-02-03 12:02:00,051] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,052] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4102 bytes from start of buffer +[2025-02-03 12:02:00,052] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,052] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,052] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 971 bytes +[2025-02-03 12:02:00,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 971 bytes +[2025-02-03 12:02:00,054] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns:oc-eth="http://openconfig.net/yang/interfaces/ethernet">oc-eth:SPEED_10GB1C:EA:0B:00:8A:930000107708541518402809173000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFF
eth-1/0/20eth-1/0/20ianaift:ethernetCsmacd"Conexion con HL5-2-2"trueeth-1/0/20ianaift:ethernetCsmacd1600"Conexion con HL5-2-2"true20UPUP9420797028596502809485017013250336075286000752860oc-eth:SPEED_10GB1C:EA:0B:00:8A:94000" +[2025-02-03 12:02:00,063] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,063] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2012 bytes from start of buffer +[2025-02-03 12:02:00,064] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1010 bytes +[2025-02-03 12:02:00,064] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,064] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "42eth-1/0/13.13eth-1/0/13.13ianaift:l3ipvlanfalseeth-1/0/13.13ianaift:l3ipvlan1500false411199DOWNDOWN000falsefalsefalse" +[2025-02-03 12:02:00,064] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1017 bytes from start of buffer +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 991 bytes +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 991 bytes +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,065] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0000501775286028094800oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100ianaift:l3ipvlantrue
eth-1/0/14.70ianaift:l3ipvlan1500true444024UPDOWN000falsefalsefalse" +[2025-02-03 12:02:00,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,067] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2044 bytes from start of buffer +[2025-02-03 12:02:00,067] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,067] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces">NNIeth xe0falseOFFeth-1/0/21eth-1/0/21ianaift:ethernetCsmacdtrueeth-1/0/21ianaift:ethernetCsmacd1600true21UPDOWN00000" +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4036 bytes from start of buffer +[2025-02-03 12:02:00,068] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,069] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "7070eth-1/0/15.203eth-1/0/15.203ianaift:l3ipvlantrueeth-1/0/15.203ianaift:l3ipvlan1500true476925UPDOWN000
150.2.203.5150.2.203.524150.2.203.524
false" +[2025-02-03 12:02:00,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,069] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:02:00,069] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4036 +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4036 bytes, original size 4593 +[2025-02-03 12:02:00,070] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "
2001::150:2:203:52001::150:2:203:51122001::150:2:203:5112
truefalsetruefe80::9a19:2cff:fe5e:850064
203203
" +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4098 bytes from start of buffer +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 557 bytes +[2025-02-03 12:02:00,071] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,072] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,072] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,072] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,073] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,073] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4098 +[2025-02-03 12:02:00,073] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,073] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4098 bytes, original size 4732 +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,074] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 634 bytes +[2025-02-03 12:02:00,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,075] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,075] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4653 bytes +[2025-02-03 12:02:00,075] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,076] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,076] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,076] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1004 bytes +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:95000000000" +[2025-02-03 12:02:00,077] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1011 bytes from start of buffer +[2025-02-03 12:02:00,078] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,078] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,078] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,079] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4730 bytes +[2025-02-03 12:02:00,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,079] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,079] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,080] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,080] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFF
eth-1/0/22" +[2025-02-03 12:02:00,080] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,080] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1015 bytes +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,081] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/16.69eth-1/0/16.69ianaift:l3ipvlan1522trueeth-1/0/16.69ianaift:l3ipvlan1522true509559UPDOWN000
192.168.69.1192.168.69.124192.168.69.124
false
falseianaift:ethernetCsmacd"TeraFlow"trueeth-1/0/22ianaift:ethernetCsmacd1600"TeraFlow"true22UPDOWN00000013250336075286000752860oc-eth:SPEED_10" +[2025-02-03 12:02:00,082] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,082] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3073 bytes from start of buffer +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1005 bytes +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1005 bytes +[2025-02-03 12:02:00,083] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 992 bytes +[2025-02-03 12:02:00,084] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces">false6969
eth-1/0/17.205eth-1/0/17.205ianaift:l3ipvlanfalseeth-1/0/17.205ianaift:l3ipvlan1500false542463DOWNDOWN000false000752860000oc-vlan-types:TPID_0X8100falsefalseeth-1/0/19.55eth-1/0/19.55ianaift:l3ipvlan"Conexion con HL5-1-2"trueeth-1/0/19.55ianaift:l3ipvlan1500"Conexion con HL5-1-2"true607849UPDOWN000
99.5.19.199.5.19.1" +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3062 bytes from start of buffer +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4071 +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4071 bytes, original size 4653 +[2025-02-03 12:02:00,086] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,087] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,087] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,087] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 582 bytes +[2025-02-03 12:02:00,088] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "2499.5.19.124
false
2001::99:5:19:52001::99:5:19:51122001::99:5:19:5112
truefalsetruefe80::9a19:2cff:fe5e:850064
" +[2025-02-03 12:02:00,088] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,088] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4088 bytes from start of buffer +[2025-02-03 12:02:00,088] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,088] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,089] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,089] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,089] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,089] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,089] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,090] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,090] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,090] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4088 +[2025-02-03 12:02:00,090] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,090] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4088 bytes, original size 4730 +[2025-02-03 12:02:00,091] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,091] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,091] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,091] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,091] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4678 bytes +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 642 bytes +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,092] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://www.advaoptical.com/cim/adva-dnos-oc-interfaces" xmlns:oc-vlan-types="http://openconfig.net/yang/vlan-types">oc-vlan-types:TPID_0X8100NNIeth xe0falseOFF
eth-1/0/23eth-1/0/23ianaift:ethernetCsmacdtrueeth-1/0/23ianaift:ethernetCsmacd1600true23UPD" +[2025-02-03 12:02:00,093] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,094] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,095] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 970 bytes +[2025-02-03 12:02:00,095] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4738 bytes +[2025-02-03 12:02:00,095] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 970 bytes +[2025-02-03 12:02:00,095] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,096] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "OWN25209855900559000000oc-eth:SPEED_10GB1C:EA:0B:00:8A:97000010ianaift:l3ipvlan"Conexion con HL5-2-2"trueeth-1/0/20.55ianaift:l3ipvlan1500"Conexion con HL5-2-2"true640617UPDOWN000
99.5.20.199.5.20.12499.5.20.124" +[2025-02-03 12:02:00,097] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:02:00,097] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "
false
2001::99:5:20:52001::99:5:20:51122001::99:5:20:5112
truefalsetruefe80::9a19:2cff:fe5e:850064
2020" +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2057 bytes from start of buffer +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 976 bytes +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 976 bytes +[2025-02-03 12:02:00,098] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "
eth-1/0/21.111eth-1/0/21.111ianaift:l3ipvlan3000trueeth-1/0/21.111ianaift:l3ipvlan3000true673441UPDOWN000
172.16.1.1172.16.1.124172.16.1.124
false
falsefalse111111
eth-1/0/23.40eth-1/0/23.40ianaift:l3ipvlan"Conexion con HL3-1-2"trueeth-1/0/23.40ianaift:l3ipvlan1500"Conexion con HL3-1-2"true738906UPDOWN0" +[2025-02-03 12:02:00,100] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4067 bytes from start of buffer +[2025-02-03 12:02:00,100] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,100] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,101] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,101] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,100] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1006 bytes +[2025-02-03 12:02:00,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1006 bytes +[2025-02-03 12:02:00,101] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 4067 +[2025-02-03 12:02:00,102] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = " xmlns="http://openconfig.net/yang/interfaces/ethernet-ext">436949000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/24eth-1/0/24ianaift:ethernetCsmacd"TeraFlow"trueeth-1/0/24ianaift:ethernetCsmacd1600"TeraFlow"true24UPUP942043142859470280939500801054951045994040" +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4051 bytes from start of buffer +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1007 bytes +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4051 +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4051 bytes, original size 4678 +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,104] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,105] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 627 bytes +[2025-02-03 12:02:00,105] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,105] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,105] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,103] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,106] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,106] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1416 bytes +[2025-02-03 12:02:00,105] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1007 bytes +[2025-02-03 12:02:00,107] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,106] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,107] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,107] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,108] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,108] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,109] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,109] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,109] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "00
10.3.55.4010.3.55.402410.3.55.4024
false
2001::99:4:40:52001::99:4:40:51122001::99:4:40:5112
truefalsetruefe80::9a19:2cff:fe5e:8500" +[2025-02-03 12:02:00,108] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,109] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:02:00,111] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,112] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,112] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 381 bytes +[2025-02-03 12:02:00,111] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,112] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 381 bytes +[2025-02-03 12:02:00,112] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "64
5555
" +[2025-02-03 12:02:00,112] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4723 bytes +[2025-02-03 12:02:00,113] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1412 bytes from start of buffer +[2025-02-03 12:02:00,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,113] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,113] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,113] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:02:00,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1007 bytes +[2025-02-03 12:02:00,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1007 bytes +[2025-02-03 12:02:00,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0599404oc-eth:SPEED_10GB1C:EA:0B:00:8A:980000000500859940428093900" +[2025-02-03 12:02:00,114] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1014 bytes from start of buffer +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/25eth-1/0/25ianaift:ethernetCsmacd"TeraFlow"" +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2038 bytes from start of buffer +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "trueeth-1/0/25ianaift:ethernetCsmacd1600"TeraFlow"true25UPDOWN00000010573998659992300599923oc-eth:SPEED_10GB1C:EA:0B:00:8A:990" +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3054 bytes from start of buffer +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,115] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "000004369599412000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X81" +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4085 bytes from start of buffer +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4085 +[2025-02-03 12:02:00,116] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4085 bytes, original size 4723 +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 638 bytes +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,117] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4734 bytes +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:02:00,118] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "00NNIeth xe0falseOFFeth-1/0/26eth-1/0/26ianaift:ethernetCsmacdtrueeth-1/0/26ianaift:ethernetCsmacd1600true26UPDOWN102105088931379769600927976960039" +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1021 bytes from start of buffer +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "64709430204554467367347320736734732000oc-eth:SPEED_100GB1C:EA:0B:00:8A:9A0000006054" +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2045 bytes from start of buffer +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,119] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,120] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "15344307298000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseianaift:ethernetCsmacd1500trueeth-1/0/27ianaift:ethernetCsmacd1500true27UPDOWN10210513407917976963613797696361021098665038008077082061527708206056960" +[2025-02-03 12:02:00,120] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4107 bytes from start of buffer +[2025-02-03 12:02:00,120] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,120] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 979 bytes +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4107 +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4107 bytes, original size 4734 +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 627 bytes +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 979 bytes +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,121] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4723 bytes +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 979 bytes +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 979 bytes +[2025-02-03 12:02:00,122] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-eth:SPEED_100GB1C:EA:0B:00:8A:9B000000148115685169616000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFeth0eth0ianaift:ethernetCsmacdtrueeth0ianaift:ethernetCsmacd1500" +[2025-02-03 12:02:00,123] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2007 bytes from start of buffer +[2025-02-03 12:02:00,123] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,123] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,123] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "true8705UPUP000
10.95.90.12610.95.90.1262410.95.90.12624
false
falsefalse
dummy1dummy1ianaift:softwareLoopbacktruedummy1ianaift:softwareLoopback1500true8709UPUP000
5.5.5.15.5.5.1325.5.5.132
eth-1/0/5.1eth-1/0/5.1ianaift:l3ipvlantrueeth-1/0/5.1ianaift:l3ipvlan1500true149043" +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4056 bytes from start of buffer +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,124] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4056 +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4056 bytes, original size 4723 +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 667 bytes +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,125] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4763 bytes +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 993 bytes +[2025-02-03 12:02:00,126] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 993 bytes +[2025-02-03 12:02:00,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "UPDOWN000
192.85.1.1192.85.1.130192.85.1.130
false
falsefalse666666
eth-1/0/9.33eth-1/0/9.33ianaift:l3ipvlan3000trueeth-1/0/9.33ianaift:l3ipvlan3000true280147UPDOWN000
172.16.3.1172.16.3.124172.16.3.124
false
falsefalse" +[2025-02-03 12:02:00,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2030 bytes from start of buffer +[2025-02-03 12:02:00,127] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3333
eth-1/0/10.41eth-1/0/10.41ianaift:l3ipvlan"Conexion con HL3-1-2"trueeth-1/0/10.41ianaift:l3ipvlan1500"Conexion con HL3-1-2"true312923UPDOWN000
99.4.41.599.4.41.524" +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3053 bytes from start of buffer +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "99.4.41.524
false
2001::99:4:41:52001::99:4:41:51122001::99:4:41:5112
truefalsetruefe80::1eea:bff:fe00:8a8064
41" +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4081 bytes from start of buffer +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,128] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4081 +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4081 bytes, original size 4763 +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 682 bytes +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,129] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4778 bytes +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "41
eth-1/0/19.55eth-1/0/19.55ianaift:l3ipvlan"Conexion con HL5-4-1"trueeth-1/0/19.55ianaift:l3ipvlan1500"Conexion con HL5-4-1"true607849UPDOWN000
99.5.19.299.5.19.22499.5.19.224
" +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1026 bytes from start of buffer +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,130] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
false
2001::99:5:19:22001::99:5:19:21122001::99:5:19:2112
truefalsetruefe80::1eea:bff:fe00:8a8064
1919" +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2053 bytes from start of buffer +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,131] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
eth-1/0/22.111eth-1/0/22.111ianaift:l3ipvlan3000trueeth-1/0/22.111ianaift:l3ipvlan3000true706209UPDOWN000
172.16.2.1172.16.2.124172.16.2.124
false
false" +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3078 bytes from start of buffer +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1007 bytes +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1007 bytes +[2025-02-03 12:02:00,132] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "false111111
eth-1/0/25.55eth-1/0/25.55ianaift:l3ipvlan"Conexion con HL5-2-2"trueeth-1/0/25.55ianaift:l3ipvlan1500"Conexion con HL5-2-2"true804457UPDOWN000
99.5.55.199.5.55.12499.5.55.124
false
2001::99:5:55:12001::99:5:55:11122001::99:5:55:1112
truefalsetruefe80::1eea:bff:fe00:8a8064
5555
eth-1/0/26.357eth-1/0/26.357ianaift:l3ipvlanPruebas energiatrueeth-1/0/26.357ianaift:l3ipvlan1500Pruebas energiatrue837527UPDOWN000" +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2007 bytes from start of buffer +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
5.3.3.15.3.3.1245.3.3.124
false
falsefalse357357
eth-1/0/27.246eth-1/0/27.246ianaift:l3ipvlanPruebas energiatrueeth-1/0/27.246ianaift:l3ipvlan" +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3036 bytes from start of buffer +[2025-02-03 12:02:00,135] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1023 bytes +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1023 bytes +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1500Pruebas energiatrue870184UPDOWN0736734728709430204510720609616325078030889600000ENABLE0
4.3.2.3" +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4066 bytes from start of buffer +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4066 +[2025-02-03 12:02:00,136] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4066 bytes, original size 4782 +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 716 bytes +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,137] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4812 bytes +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "4.3.2.3244.3.2.324
false
falsefalse246246
eth-1/0/23.996eth-1/0/23.996ianaift:l2vlantrueeth-1/0/23.996ianaift:l2vlan1500true739862" +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1023 bytes from start of buffer +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 995 bytes +[2025-02-03 12:02:00,138] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 995 bytes +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "UPDOWN000996falsefalsefalse996996eth-1/0/20.534eth-1/0/20.534ianaift:l3ipvlan1450trueeth-1/0/20.534ianaift:l3ipvlan1450true641096UPUP0005603d4487d23
172.16.131.202172.16.131.20216172.16.131.20216
false
falsefalse534" +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3051 bytes from start of buffer +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,139] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "534
eth-1/0/3.1eth-1/0/3.1ianaift:l3ipvlantest A1_2trueeth-1/0/3.1ianaift:l3ipvlan1500test A1_2true83507UPDOWN000Movistar_4G_1false" +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4077 bytes from start of buffer +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4077 +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4077 bytes, original size 4812 +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 735 bytes +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,140] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4831 bytes +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,141] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "falsefalse101101eth-1/0/15.456eth-1/0/15.456ianaift:l3ipvlansubinterface_descriptiontrueeth-1/0/15.456ianaift:l3ipvlan1500subinterface_descriptiontrue477178UPDOWN000" +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,142] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "cisco_test_4_adva
172.16.61.49172.16.61.4930172.16.61.4930
false
falsefalse456456
eth-1/0/16.476eth-1/0/16.476ianaift:l3ipvlanianaift:l3ipvlan1500subinterface_descriptiontrue509966UPDOWN000cisco_test_4_adva
172.16.65.49172.16.65.4930172.16.65.4930
false
falsefalse476476
eth-1/0/15.656eth-1/0/15.656ianaift:l3ipvlansubinterface_descriptiontrueeth-1/0/15.656ianaift:l3ipvlan1500subinterface_descriptiontrue477378UPDOWN000cisco_test_5_adva
172.16.61.49172.16.61.4930172.16.61.4930
false
falsefalse656656
eth-1/0/16.676eth-1/0/16.676ianaift:l3ipvlansubinterfac" +[2025-02-03 12:02:00,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,145] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 991 bytes +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 991 bytes +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "e_descriptionfalseeth-1/0/16.676ianaift:l3ipvlan1500subinterface_descriptionfalse510166DOWNDOWN000cisco_test_5_adva
172.16.65.49172.16.65.4930172.16.65.4930
false
falsefalse
eth-1/0/12.123eth-1/0/12.123ianaift:l3ipvlantrueeth-1/0/12.123ianaift:l3ipvlan1500true378541UPUP000
192.168.200.3192.168.200.324192.168.200.324
false" +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3055 bytes from start of buffer +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 473 bytes +[2025-02-03 12:02:00,146] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 473 bytes +[2025-02-03 12:02:00,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
falsefalse123123
" +[2025-02-03 12:02:00,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3534 bytes from start of buffer +[2025-02-03 12:02:00,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,147] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:02:00,151] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:02:00,151] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1416 bytes, original size 1416 +[2025-02-03 12:02:00,151] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,152] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:02:00,166] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:02:00,166] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3538 bytes, original size 3538 +[2025-02-03 12:02:00,167] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,167] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,180] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:02:00,180] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 3206 bytes +[2025-02-03 12:02:00,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,332] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "set_srv_ACLrset_srv_ACLr65000:533set_srv_ACLset_srv_ACL65000:533set_import_export_1_import_policyset_import_export_1_import_policy65001:301" +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1010 bytes +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "set_import_export_1_export_policyset_import_export_1_export_policy65001:301srv_ACLrsrv_ACLrstm_srv_ACLrstm_srv_ACLrset_srv_ACLrsrv_ACLsrv_ACLstm_srv_ACLstm_srv_ACLset_srv_ACL" +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2048 bytes from start of buffer +[2025-02-03 12:02:00,333] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "import_export_1_import_policyimport_export_1_import_policystm_import_export_1_import_policystm_import_export_1_import_policyset_import_export_1_import_policyimport_export_1_export_policyimport_export_1_export_policystm_import_export_1_export_policystm_import_export_1_export_policyset_import_export_1_export_policy" +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3064 bytes from start of buffer +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 132 bytes +[2025-02-03 12:02:00,334] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 132 bytes +[2025-02-03 12:02:00,335] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "" +[2025-02-03 12:02:00,335] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3202 bytes from start of buffer +[2025-02-03 12:02:00,335] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,335] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:02:00,335] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:02:00,336] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3206 bytes, original size 3206 +[2025-02-03 12:02:00,337] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,338] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,338] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,338] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,340] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,341] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,341] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,341] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,341] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,342] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,343] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,344] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 6 bytes +[2025-02-03 12:02:00,344] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,344] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,345] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1037 bytes +[2025-02-03 12:02:00,345] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,346] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,347] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,348] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,348] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 241 bytes +[2025-02-03 12:02:00,349] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,351] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,352] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,352] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,353] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,353] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,354] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/1eth-1/0/1ianaift:ethernetCsmacdfalseeth-1/0/1ianaift:ethernetCsmacd1600false1DOWNDOWN00000000000" +[2025-02-03 12:02:00,360] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 247 bytes from start of buffer +[2025-02-03 12:02:00,360] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,360] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:02:00,363] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:02:00,363] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:02:00,363] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,364] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,364] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 251 bytes, original size 251 +[2025-02-03 12:02:00,364] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4102 bytes +[2025-02-03 12:02:00,365] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,366] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,367] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:02:00,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,368] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,368] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 967 bytes +[2025-02-03 12:02:00,369] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 967 bytes +[2025-02-03 12:02:00,370] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = " xmlns="http://openconfig.net/yang/interfaces/ethernet">oc-eth:SPEED_100GB1C:EA:0B:00:76:01000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFeth-1/0/2eth-1/0/2ianaift:ethernetCsmacdfalseeth-1/0/2ianaift:ethernetCsmacd1600false2DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:76:020000" +[2025-02-03 12:02:00,373] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2994 bytes from start of buffer +[2025-02-03 12:02:00,374] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,374] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,375] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,375] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 999 bytes +[2025-02-03 12:02:00,375] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/3eth-1/0/3ianaift:ethernetCsmacdfalseeth-1/0/3ianaift:ethernetCsmacd1600false3DOWNDOWN0000000" +[2025-02-03 12:02:00,381] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,381] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,381] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,382] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1005 bytes +[2025-02-03 12:02:00,382] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1005 bytes +[2025-02-03 12:02:00,382] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:76:0300000000000" +[2025-02-03 12:02:00,382] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2043 bytes from start of buffer +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/4eth-1/0/4ia" +[2025-02-03 12:02:00,383] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3074 bytes from start of buffer +[2025-02-03 12:02:00,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1008 bytes +[2025-02-03 12:02:00,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1008 bytes +[2025-02-03 12:02:00,384] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "naift:ethernetCsmacdfalseeth-1/0/4ianaift:ethernetCsmacd1600false4DOWNDOWN00000000000oc-eth:SPEED_UNKNOWN1C:EA:0B:00:76:0400" +[2025-02-03 12:02:00,385] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4089 bytes from start of buffer +[2025-02-03 12:02:00,385] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4089 +[2025-02-03 12:02:00,386] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4089 bytes, original size 4199 +[2025-02-03 12:02:00,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 110 bytes +[2025-02-03 12:02:00,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,387] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,388] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,389] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,389] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4206 bytes +[2025-02-03 12:02:00,389] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,389] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,390] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/5eth-1/0/5ianaift:ethernetCsmacd"TeraFlow"falseeth-1/0/5ianaift:ethernetCsmacd1600"TeraFlow"false5DOWNDOWN000" +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2055 bytes from start of buffer +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 975 bytes +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 975 bytes +[2025-02-03 12:02:00,392] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00000000oc-eth:SPEED_10GBoc-eth:SPEED_10GB1C:EA:0B:00:76:05000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe250falseOFFeth-1/0/6eth-1/0/6ianaift:ethernetCsmacdtrueeth-1/0/6ianaift:ethernetCsmacd1600true6UPDOWN00000090038511531403099689431714" +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1021 bytes from start of buffer +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1008 bytes +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1008 bytes +[2025-02-03 12:02:00,399] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-eth:SPEED_10GB1C:EA:0B:00:76:0600000002188462128689968900oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/7eth-1/0/7ianaift:ethernetCsmacdfalseeth-1/0/7ianaift:ethernetCsmacd1600false7DOWNDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:070000" +[2025-02-03 12:02:00,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4052 bytes from start of buffer +[2025-02-03 12:02:00,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,401] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4052 +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4052 bytes, original size 4254 +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 202 bytes +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,402] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,403] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4298 bytes +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,404] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 999 bytes +[2025-02-03 12:02:00,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/8eth-1/0/8ianaift:ethernetCsmacdfalseeth-1/0/8ianaift:ethernetCsmacd1600false8DOWNDOWN00000000" +[2025-02-03 12:02:00,405] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2035 bytes from start of buffer +[2025-02-03 12:02:00,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1001 bytes +[2025-02-03 12:02:00,406] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1001 bytes +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "000oc-eth:SPEED_10GB1C:EA:0B:00:76:0800000000000" +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3043 bytes from start of buffer +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/9eth-1/0/9iana" +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4074 bytes from start of buffer +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1003 bytes +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,407] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4074 +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4074 bytes, original size 4298 +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 224 bytes +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1003 bytes +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,408] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4320 bytes +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1003 bytes +[2025-02-03 12:02:00,409] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1003 bytes +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "ift:ethernetCsmacdfalseeth-1/0/9ianaift:ethernetCsmacd1600false9DOWNDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:0900" +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1010 bytes from start of buffer +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,410] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/10eth-1/0/10ianaift:ethernetCsmacdtrueeth-1/0/10ianaift:ethernetCsmacd1600true10UPDOWN92179771116884104" +[2025-02-03 12:02:00,411] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3056 bytes from start of buffer +[2025-02-03 12:02:00,411] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,411] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1004 bytes +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1168837013192465874957200749572oc-eth:SPEED_10GB1C:EA:0B:00:76:0A000000346166783558" +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4067 bytes from start of buffer +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4067 +[2025-02-03 12:02:00,412] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4067 bytes, original size 4320 +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 253 bytes +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,413] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,414] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,414] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,414] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,414] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,414] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4349 bytes +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,415] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "7496223906700oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFF" +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1023 bytes from start of buffer +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/11eth-1/0/11ianaift:ethernetCsmacdfalseeth-1/0/11ianaift:ethernetCsmacd1600false11DOWNDOWN00000000000oc-eth:SPEED_10GB" +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2053 bytes from start of buffer +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,416] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,417] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 985 bytes +[2025-02-03 12:02:00,417] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 985 bytes +[2025-02-03 12:02:00,417] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1C:EA:0B:00:76:0B000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/12eth-1/0/12ianaift:ethernetCsmacdtrueeth-1/0/12ianaift:ethernetCsmacd1600true12UPU" +[2025-02-03 12:02:00,417] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4075 bytes from start of buffer +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4075 +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4075 bytes, original size 4349 +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 274 bytes +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,418] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4370 bytes +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,419] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1010 bytes +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "P1775487412290699271670596274090929699619941200oc-eth:SPEED_1GBoc-eth:SPEED_1GB1C:EA:0B:00:76:0C0000001372438216644321649500oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth x" +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2048 bytes from start of buffer +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1015 bytes +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "e0falseOFFeth-1/0/13eth-1/0/13ianaift:ethernetCsmacdfalseeth-1/0/13ianaift:ethernetCsmacd1600false13DOWNDOWN000000000" +[2025-02-03 12:02:00,420] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3070 bytes from start of buffer +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1009 bytes +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1009 bytes +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00oc-eth:SPEED_10GB1C:EA:0B:00:76:0D000000000000" +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4086 bytes from start of buffer +[2025-02-03 12:02:00,421] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4086 +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4086 bytes, original size 4370 +[2025-02-03 12:02:00,422] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 284 bytes +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,423] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,424] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,424] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,424] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,424] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,424] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4102 bytes +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/14eth-1/0/14ianaift:ethernetCsmacdtrue" +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,425] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1013 bytes +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/14ianaift:ethernetCsmacd1600true14UPDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:0E000" +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2044 bytes from start of buffer +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,426] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100N" +[2025-02-03 12:02:00,427] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "NIeth xe0falseOFFeth-1/0/15eth-1/0/15ianaift:ethernetCsmacdfalseeth-1/0/15ianaift:ethernetCsmacd1600false15DOWNDOWN0000000" +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4102 bytes, original size 4102 +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2062 bytes +[2025-02-03 12:02:00,428] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000oc-eth:SPEED_10GB1C:EA:0B:00:76:0F0000000000" +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/16eth-1/0/16i" +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2062 bytes, original size 2062 +[2025-02-03 12:02:00,429] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,430] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1025 bytes +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "anaift:ethernetCsmacdtrueeth-1/0/16ianaift:ethernetCsmacd1600true16UPUP11928729535886303525916272000000oc-eth:SPEED_1GBoc-eth:SPEED_1GB" +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1025 bytes, original size 1025 +[2025-02-03 12:02:00,431] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 6 bytes +[2025-02-03 12:02:00,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,432] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 980 bytes +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2007 bytes +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 980 bytes +[2025-02-03 12:02:00,433] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 980 bytes +[2025-02-03 12:02:00,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1C:EA:0B:00:76:1000000006272035259100oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/17eth-1/0/17ianaift:ethernetCsmacdfalseeth-1/0/17ianaift:ethernetCsmacd1600false17DOWN" +[2025-02-03 12:02:00,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2007 bytes, original size 2007 +[2025-02-03 12:02:00,434] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 6 bytes +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 975 bytes +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,435] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 981 bytes +[2025-02-03 12:02:00,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,436] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,437] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 975 bytes +[2025-02-03 12:02:00,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 975 bytes +[2025-02-03 12:02:00,438] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "DOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:11000000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/18eth-1/0/18ianaift:ethernetCsmacd"Conexion con HL5-1-2"trueeth-1/0/18ianaift:ethernetCsmacd1600"Conexion con HL5-1-2"true18UPDOWN0000001325038747528630" +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2027 bytes from start of buffer +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0752863oc-eth:SPEED_10GB1C:EA:0B:00:76:1200000000752863000" +[2025-02-03 12:02:00,441] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3053 bytes from start of buffer +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3053 +[2025-02-03 12:02:00,442] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3053 bytes, original size 3060 +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,443] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 3079 bytes +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/19eth-1/0/19ianaift:ethernetCsmacdfalse" +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1025 bytes from start of buffer +[2025-02-03 12:02:00,444] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/19ianaift:ethernetCsmacd1600false19DOWNDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:13000" +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2048 bytes from start of buffer +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100N" +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3079 bytes, original size 3079 +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,445] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,446] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1027 bytes +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "NIeth xe0falseOFFeth-1/0/20eth-1/0/20ianaift:ethernetCsmacdfalseeth-1/0/20ianaift:ethernetCsmacd1600false20DOWNDOWN0000000" +[2025-02-03 12:02:00,447] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1027 bytes, original size 1027 +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,448] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1031 bytes +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,449] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000oc-eth:SPEED_10GB1C:EA:0B:00:76:140000000000" +[2025-02-03 12:02:00,450] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1031 bytes, original size 1031 +[2025-02-03 12:02:00,450] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,450] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2046 bytes +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/21eth-1/0/21i" +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,451] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1008 bytes +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1008 bytes +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "anaift:ethernetCsmacdfalseeth-1/0/21ianaift:ethernetCsmacd1600false21DOWNDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:1500" +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2046 bytes, original size 2046 +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,452] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1026 bytes +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,453] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/22eth-1/0/22ianaift:ethernetCsmacd"TeraFlow"trueeth-1/0/22ianaift:ethernetCsmacd1600"TeraFlow"true22UPUP666469827676080" +[2025-02-03 12:02:00,455] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1019 bytes from start of buffer +[2025-02-03 12:02:00,455] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 1019 +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 1019 bytes, original size 1026 +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,456] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,457] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,458] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,458] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,458] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 3047 bytes +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0767608013250352275286100752861oc-eth:SPEED_10GB1C:EA:0B:00:76:160000000" +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,459] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,460] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,460] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "767608752861000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0false" +[2025-02-03 12:02:00,460] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:02:00,461] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,461] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,461] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 979 bytes +[2025-02-03 12:02:00,461] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 979 bytes +[2025-02-03 12:02:00,461] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "OFFeth-1/0/23eth-1/0/23ianaift:ethernetCsmacdtrueeth-1/0/23ianaift:ethernetCsmacd1600true23UPUP11928852735887203525936279000000oc-eth:SPEED_1GBoc-eth:SPEED_1GB1C:EA:0B:00:76:1700000006279035259300oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/24eth-1/0/24ianaift:ethernetCsmacdfalseeth-1/0/24ianaift:ethernetCsmacd1600false24DOWNDOWN00000000000oc-eth:SPEED_10GB1C:EA:0B:00:76:180000" +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1021 bytes from start of buffer +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 999 bytes +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 999 bytes +[2025-02-03 12:02:00,464] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "00000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/25eth-1/0/25ianaift:ethernetCsmacdfalseeth-1/0/25ianaift:ethernetCsmacd1600false25DOWNDOWN0000000" +[2025-02-03 12:02:00,470] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1023 bytes from start of buffer +[2025-02-03 12:02:00,470] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,470] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,470] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1012 bytes +[2025-02-03 12:02:00,471] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1012 bytes +[2025-02-03 12:02:00,472] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000oc-eth:SPEED_10GB1C:EA:0B:00:76:1900000000000" +[2025-02-03 12:02:00,472] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:02:00,473] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,473] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,473] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,473] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,473] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth xe0falseOFFeth-1/0/26eth-1/0/26ia" +[2025-02-03 12:02:00,474] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3073 bytes from start of buffer +[2025-02-03 12:02:00,474] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,474] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,474] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1004 bytes +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1004 bytes +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "naift:ethernetCsmacdtrueeth-1/0/26ianaift:ethernetCsmacd1600true26UPDOWN00000000000oc-eth:SPEED_100GB1C:EA:0B:00:76:1A00" +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4084 bytes, original size 4084 +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,475] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,476] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,476] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,476] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,479] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0000000000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFeth-1/0/27eth-1/0/27ianaift:ethernetCsmacdtrueeth-1/0/27ianaift:ethernetCsmacd1600true27UPDOWN2166232618203700" +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2047 bytes from start of buffer +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "1820370672010501050oc-eth:SPEED_100GB1C:EA:0B:00:76:1B0000001061820360" +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3071 bytes from start of buffer +[2025-02-03 12:02:00,481] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,482] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,482] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,483] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,483] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3071 +[2025-02-03 12:02:00,483] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3071 bytes, original size 4096 +[2025-02-03 12:02:00,483] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1025 bytes +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,484] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 5121 bytes +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,485] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "000oc-vlan-types:TPID_0X8100oc-vlan-types:TPID_0X8100NNIeth qsfp0falseOFFet" +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,486] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "h0eth0ianaift:ethernetCsmacdtrueeth0ianaift:ethernetCsmacd1500true8705UPUP000
10.95.90.12510.95.90.1252410.95.90.12524
false
falsefalse" +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2057 bytes from start of buffer +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1002 bytes +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1002 bytes +[2025-02-03 12:02:00,487] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "
dummy1dummy1ianaift:softwareLoopbacktruedummy1ianaift:softwareLoopback1500true8709UPUP000
5.5.5.55.5.5.5325.5.5.532
eth-1/0/10.50eth-1/0/10.50ianaift:l3ipvlantrueeth-1/0/10.50ianaift:l3ipvlan1500true312932UPDOWN000
50.50.50.250.50.50.23050.50.50.230
false
falsefalse5050
eth-1/0/16.125eth-1/0/16.125ianaift:l3ipvlantrueeth-1/0/16.125ianaift:l3ipvlan1500true509615UPUP000
172.16.16.1172.16.16.124172.16.16.124
" +[2025-02-03 12:02:00,489] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 5114 bytes from start of buffer +[2025-02-03 12:02:00,489] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,489] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 5114 +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 5114 bytes, original size 5121 +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,490] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,491] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4103 bytes +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "
false
falsefalse125125
eth-1/0/20.55eth-1/0/20.55ianaift:l3ipvlan"Conexion con HL5-4-1"trueeth-1/0/20.55ianaift:l3ipvlan1500"Conexion con HL5-4-1"true640617UPDOWN" +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1024 bytes from start of buffer +[2025-02-03 12:02:00,492] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,493] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,493] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 985 bytes +[2025-02-03 12:02:00,493] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 985 bytes +[2025-02-03 12:02:00,493] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "000
99.5.20.399.5.20.32499.5.20.324
false
2001::99:5:20:22001::99:5:20:21122001::99:5:20:2112
truefalsetruefe80::1eea:bff:fe00:760064
2020
eth-1/0/22.111eth-1/0/22.111ianaift:l3ipvlantrueeth-1/0/22.111ianaift:l3ipvlan1500true706209UPUP000
172.16.4.1172.16.4.124172.16.4.124
falsefalsefalse111111
eth-1/0/23.125eth-1/0/23.125ianaift:l3ipvlantrueeth-1/0/23.125i" +[2025-02-03 12:02:00,494] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4076 bytes from start of buffer +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4076 +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4076 bytes, original size 4103 +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,495] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 27 bytes +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,496] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4123 bytes +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "anaift:l3ipvlan1500true738991UPUP000
172.16.61.1172.16.61.124172.16.61.124
false
falsefalse125125
" +[2025-02-03 12:02:00,497] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1026 bytes from start of buffer +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/25.55eth-1/0/25.55ianaift:l3ipvlan"Conexion con HL5-1-2"trueeth-1/0/25.55ianaift:l3ipvlan1500"Conexion con HL5-1-2"true804457UPDOWN000
99.5.55.299.5.55.22499.5.55.224
false
" +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2050 bytes from start of buffer +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,498] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,499] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,499] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,499] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "
2001::99:5:55:22001::99:5:55:21122001::99:5:55:2112
truefalsetruefe80::1eea:bff:fe00:760064
5555
eth-1/0/27.246eth-1/0/27.246ianaift:l3ipvlan1522Pruebas XRtrueeth-1/0/27.246ianaift:l3ipvlan1522Pruebas XRtrue870184UPDOWN000
172.16.2.1172.16.2.124172.16.2.124
false
falsefalse246246
eth-1/0/10.69eth-1/0/10.69ianaift:l3ipvlan1522trueeth-1/0/10.69ianaift:l3ipvlan1522true312951UPDOWN000
192.168.69.1192.168.69.1" +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1012 bytes +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1012 bytes +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "24192.168.69.124
false
falsefalse6969
eth-1/0/12.123eth-1/0/12.123ianaift:l3ipvlantrueeth-1/0/12.123ianaift:l3ipvlan1500true378541" +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2047 bytes from start of buffer +[2025-02-03 12:02:00,503] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 958 bytes +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 958 bytes +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "UPUP000
192.168.200.2192.168.200.224192.168.200.224
false
falsefalse123123
" +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3011 bytes from start of buffer +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,504] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:02:00,506] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:02:00,506] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3015 bytes, original size 3015 +[2025-02-03 12:02:00,506] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,516] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:02:00,516] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,572] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,572] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 1038 bytes +[2025-02-03 12:02:00,572] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,573] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,574] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,575] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "defaultdefaultoc-ni-types:DEFAULT_INSTANCE5.5.5.6dummy1dummy1dummy10eth-1/0/1.246eth-1/0/1.246eth-1/0/1.2460eth-1/0/2.357eth-1/0/2.357eth-1/0/2.3570eth-1/0/11.55eth-1/0/11.55eth-1/0/11.550eth-1/0" +[2025-02-03 12:02:00,575] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,575] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,575] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,576] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,576] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,576] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 1031 +[2025-02-03 12:02:00,576] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 1031 bytes, original size 1038 +[2025-02-03 12:02:00,576] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,577] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,578] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 4022 bytes +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "/12.42eth-1/0/12.42eth-1/0/12.420eth-1/0/13.13eth-1/0/13.13eth-1/0/13.130eth-1/0/14.70eth-1/0/14.70eth-1/0/14.700eth-1/0/15.203eth-1/0/15.203eth-1/0/15.2030eth-1/0/16.69eth-1/0/16.69eth-1/0/16.690eth-1/0/17.205eth-1/0/17.205eth-1/0/17.2050eth-1/0/19.55eth-1/0/19.55eth-1/0/19.550" +[2025-02-03 12:02:00,579] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "eth-1/0/20.55eth-1/0/20.55eth-1/0/20.550eth-1/0/21.111eth-1/0/21.111eth-1/0/21.1110eth-1/0/23.40eth-1/0/23.40eth-1/0/23.400oc-pol-types:STATICSTATICoc-pol-types:STATICSTATICtrue0.0.0.0/00.0.0.0/010.95.90.110.95.90.110.95.90.1" +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 2057 bytes from start of buffer +[2025-02-03 12:02:00,580] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "10.210.181.0/2410.210.181.0/24172.16.3.2172.16.3.2172.16.3.2172.16.4.0/24172.16.4.0/2499.5.20.399.5.20.399.5.20.3192.168.11.72/30192.168.11.72/30172.16.2.2172.16.2.2172.16.2.2192.168.165.0/24192.168.165.0/2410.95.86.19310.95.86.19310.95.86.193192.168.12.0/24" +[2025-02-03 12:02:00,581] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 3084 bytes from start of buffer +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 928 bytes +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 928 bytes +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "192.168.12.0/24172.16.2.2172.16.2.2172.16.2.2192.168.13.0/24192.168.13.0/24172.16.2.2172.16.2.2172.16.2.2borrarinterfazborrarinterfazoc-ni-types:L3VRFoc-ni-types:INSTANCE_LABEL" +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 4018 bytes from start of buffer +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,582] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1025 bytes +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,584] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "defaultdefaultoc-ni-types:DEFAULT_INSTANCE5.5.5.1oc-pol-types:DIRECTLY_CONNECTEDoc-pol-types:BGPoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4" +[2025-02-03 12:02:00,586] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:02:00,589] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 1025 bytes, original size 1025 +[2025-02-03 12:02:00,590] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,589] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 4022 bytes, original size 4022 +[2025-02-03 12:02:00,590] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,590] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,592] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4096 bytes +[2025-02-03 12:02:00,592] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1dummy10' +[2025-02-03 12:02:00,593] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,594] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/1.246eth-1/0/1.246eth-1/0/1.2460' +[2025-02-03 12:02:00,594] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,595] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/2.357eth-1/0/2.357eth-1/0/2.3570' +[2025-02-03 12:02:00,595] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,596] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/11.55eth-1/0/11.55eth-1/0/11.550' +[2025-02-03 12:02:00,596] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,597] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,597] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.42eth-1/0/12.42eth-1/0/12.420' +[2025-02-03 12:02:00,597] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-pol-types:BGPACCEPT_ROUTEoc-pol-types:DIRECTLY_CONNECTEDoc-pol-types:ISISoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4oc-pol-types:ISISACCEPT_ROUTEd" +[2025-02-03 12:02:00,598] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/13.13eth-1/0/13.13eth-1/0/13.130' +[2025-02-03 12:02:00,598] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,599] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/14.70eth-1/0/14.70eth-1/0/14.700' +[2025-02-03 12:02:00,599] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,599] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/15.203eth-1/0/15.203eth-1/0/15.2030' +[2025-02-03 12:02:00,599] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,600] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.69eth-1/0/16.69eth-1/0/16.690' +[2025-02-03 12:02:00,600] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,600] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/17.205eth-1/0/17.205eth-1/0/17.2050' +[2025-02-03 12:02:00,601] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,601] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/19.55eth-1/0/19.55eth-1/0/19.550' +[2025-02-03 12:02:00,602] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "ummy1dummy1dummy10eth-1/0/5.1eth-1/0/5.1eth-1/0/5.10eth-1/0/9.33eth-1/0/9.33eth-1/0/9.330eth-1/0/10.41eth-1/0/10.41eth-1/0/10.410eth-1/0/19.55eth-1/0/19.55eth-1/0/19.550eth-1/0/22.111eth-1/0/22.111eth-1/0/22.1110eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550et" +[2025-02-03 12:02:00,602] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/20.55eth-1/0/20.55eth-1/0/20.550' +[2025-02-03 12:02:00,602] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2062 bytes from start of buffer +[2025-02-03 12:02:00,603] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/21.111eth-1/0/21.111eth-1/0/21.1110' +[2025-02-03 12:02:00,603] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,604] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/23.40eth-1/0/23.40eth-1/0/23.400' +[2025-02-03 12:02:00,604] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,605] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,605] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "h-1/0/26.357eth-1/0/26.357eth-1/0/26.3570eth-1/0/27.246eth-1/0/27.246eth-1/0/27.2460eth-1/0/12.123eth-1/0/12.123eth-1/0/12.1230oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:DIRECTLY_CONNECTED" +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3083 bytes from start of buffer +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 3083 +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3083 bytes, original size 4096 +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1013 bytes +[2025-02-03 12:02:00,606] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,607] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 5109 bytes +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4
oc-pol-types:OSPFoc-types:IPV4oc-pol-types:OSPFoc-types:IPV4
oc-pol-types:ISISoc-types:IPV4" +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,608] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-pol-types:ISISoc-types:IPV4
1116000239995.5.5.1eth-1/0/10.41eth-1/0/10.41eth-1/0/10.410IPV4IPV4trueeth" +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1009 bytes +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1009 bytes +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "-1/0/19.55eth-1/0/19.55eth-1/0/19.550IPV4IPV4trueeth-1/0/25.55eth-1/0/25.55eth-1/0/25.550IPV4IPV4truedummy1dummy1" +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3074 bytes from start of buffer +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,609] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1013 bytes +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "11MPLS1oc-pol-types:OSPFOSPFoc-pol-types:OSPFOSPFtrue0.0.0.00.0.0.0dummy1dummy1oc-ospf-types:NON_BROADCAST_NETWORK1truedummy1040" +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4094 bytes from start of buffer +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,610] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4094 +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4094 bytes, original size 5109 +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,611] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1015 bytes +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,612] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,613] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,613] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,613] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,614] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,614] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 5111 bytes +[2025-02-03 12:02:00,614] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,614] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,614] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,615] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,615] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1015 bytes +[2025-02-03 12:02:00,615] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "105eth-1/0/25.55eth-1/0/25.55oc-ospf-types:POINT_TO_POINT_NETWORKoc-ospf-types:POINT_TO_POINT_NETWORK1eth-1/0/25.55040105eth-1/0/27.246oc-ospf-types:POINT_TO_POINT_NETWORK14010" +[2025-02-03 12:02:00,615] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1022 bytes from start of buffer +[2025-02-03 12:02:00,615] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1013 bytes +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "5eth-1/0/26.357oc-ospf-types:POINT_TO_POINT_NETWORK140105eth0oc-ospf-types:BROADCAST_NETWORK140105eth-1/0/10.41oc-ospf-types:POINT_TO_POINT_NETWORK1" +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2042 bytes from start of buffer +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,616] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "40105eth-1/0/19.55oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/22.111oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/9.33oc-ospf-types:POINT_TO_POINT_NETWORK" +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3066 bytes from start of buffer +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 995 bytes +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 995 bytes +[2025-02-03 12:02:00,617] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "140105eth-1/0/5.1oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/12.123oc-ospf-types:POINT_TO_POINT_NETWORK140105oc-pol-types:ISISISISoc-pol-types:ISISISIStrue49.0004.0050.0500.5001.00LEVEL_2dummy1dummy1falsetrueDISABLEBROADCAST11oc-isis-types:IPV4oc-isis-types:UNICAST" +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 5098 bytes from start of buffer +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 5098 +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 5098 bytes, original size 5111 +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 13 bytes +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,618] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4109 bytes +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,619] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.1/325.5.5.1/3254PHP22oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.1/325.5.5.1/3254" +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,620] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,621] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "PHPfalseeth-1/0/10.41trueeth-1/0/10.41POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/10.410eth-1/0/19.55trueeth-1/0/19.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfals" +[2025-02-03 12:02:00,621] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2059 bytes from start of buffer +[2025-02-03 12:02:00,621] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,622] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,622] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1018 bytes +[2025-02-03 12:02:00,622] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1018 bytes +[2025-02-03 12:02:00,622] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eeth-1/0/19.550eth-1/0/25.55trueeth-1/0/25.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/25.550eth0falsetrueDISABLEBROADCASTfalseeth-1/0/5.1falsetrueDISABLE" +[2025-02-03 12:02:00,623] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3084 bytes from start of buffer +[2025-02-03 12:02:00,623] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,623] INFO:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Requesting 'Get' +[2025-02-03 12:02:00,623] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,623] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1014 bytes +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "BROADCASTfalseeth-1/0/9.33falsetrueDISABLEBROADCASTfalseeth-1/0/12.123falsetrueDISABLEBROADCASTfalseeth-1/0/22.111falsetrueDISABLEBROADCASTfalseeth-1/0/26.357falsetrueDISABLE" +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4105 bytes from start of buffer +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: no delimiter found, buffer=" +#10" +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4105 bytes, original size 4109 +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,624] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4 bytes +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: no delimiter found, buffer=" +#10" +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4100 bytes +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,625] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "BROADCASTfalseeth-1/0/27.246falsetrueDISABLEBROADCASTfalseoc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue650015.5.5.1oc-bgp-types:L3VPN_IPV4_UNICASToc-bgp-types:L3VPN_IPV4_UNICAST" +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "trueoc-bgp-types:L3VPN_IPV6_UNICASToc-bgp-types:L3VPN_IPV6_UNICASTtrue5.5.5.55.5.5.56500105.5.5.5true650010EXTERNALIDLE484759.00.00.0false5.5.5.15.5.5.5" +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2058 bytes from start of buffer +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,626] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "true1false1falseoc-bgp-types:IPV4_UNICASToc-bgp-types:IPV4_UNICASTtrueoc-bgp-types:L3VPN_IPV4_UNICASToc-bgp-types:L3VPN_IPV4_UNICASTtrueoc-bgp-types:L3VPN_IPV6_UNICAST" +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3086 bytes from start of buffer +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,627] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 3086 +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 3086 bytes, original size 4100 +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 1014 bytes +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,628] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 5110 bytes +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,629] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-bgp-types:L3VPN_IPV6_UNICASTtrue5.5.5.65.5.5.665001true410.95.90.21510.95.90.2156500010.95.90.126true1510.95.44.22010.95.44.2206500610.95.90.126" +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 978 bytes +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 978 bytes +[2025-02-03 12:02:00,630] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "true15192.168.165.10192.168.165.106500610.95.90.126true15oc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTEDoc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTEDoc-pol-types:STATICSTATICoc-pol-types:STATICSTATICtrue0.0.0.0/00.0.0.0/010.95.90.110.95.90.110.95.90.13.3.3.0/243.3.3.0/244.3.2.14.3.2.14.3.2.110.95.0.0/1610.95.0.0/1610.95.90.110.95.90.110.95.90.1192.168.27.0/24192.168.27.0/2410.95.86.14510.95.86.145oc-ni-types:L2VSItrue1500oc-ni-types:MPLSoc-ni-types:PER_PREFIX" +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4066 bytes from start of buffer +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "eth-1/0/23.996eth-1/0/23.996eth-1/0/23.9960VC-1VC-1VC-1VC-11oc-ni-types:REMOTE5.5.5.5996
5603d4487d235603d4487d23oc-ni-types:L3VRF65000:101" +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 5092 bytes from start of buffer +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,632] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 5092 +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 5092 bytes, original size 5110 +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 18 bytes +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,633] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4114 bytes +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 994 bytes +[2025-02-03 12:02:00,634] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-ni-types:INSTANCE_LABELsrv_ACLrsrv_ACLoc-pol-types:DIRECTLY_CONNECTEDoc-pol-types:BGPoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4oc-pol-types:BGPACCEPT_ROUTEoc-pol-types:STATICoc-pol-types:BGPoc-types:IPV4oc-pol-types:STATICoc-types:IPV4oc-pol-types:BGPACCEPT_ROUTEeth-1/0/20.534eth-1/0/2" +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2031 bytes from start of buffer +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0.534eth-1/0/20.5340oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4" +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3054 bytes from start of buffer +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,635] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
oc-pol-types:STATICoc-types:IPV4oc-pol-types:STATICoc-types:IPV4
5.5.5.1oc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue650005.5.5.1oc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTEDoc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTEDoc-pol-types:STATICSTATICoc-pol-types:STATICSTATIC
Movistar_4G_1Movistar_4G_1oc-ni-types:L3VRF65001:1oc-ni-types:INSTANCE_LABEL" +[2025-02-03 12:02:00,638] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1016 bytes from start of buffer +[2025-02-03 12:02:00,638] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,638] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,638] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,639] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,639] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "import_export_1_import_policyimport_export_1_export_policyeth-1/0/3.1eth-1/0/3.1eth-1/0/3.10oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:BGPB" +[2025-02-03 12:02:00,639] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2047 bytes from start of buffer +[2025-02-03 12:02:00,639] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,639] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 968 bytes +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 968 bytes +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "GPoc-pol-types:BGPBGPtrue6500010.95.85.155
TestOscarVPNTestOscarVPNoc-ni-types:L3VRF65000:934oc-ni-types:INSTANCE_LABELoc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
5.5.5.1oc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue650005.5.5.1
cisco_test_4_advacisco_test_4_advaoc-ni-types:L3VRF65001:573" +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4050 bytes from start of buffer +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4050 +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4050 bytes, original size 4132 +[2025-02-03 12:02:00,640] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 82 bytes +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,641] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,642] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,642] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 4178 bytes +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1013 bytes +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1013 bytes +[2025-02-03 12:02:00,643] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "oc-ni-types:INSTANCE_LABELeth-1/0/15.456eth-1/0/15.456eth-1/0/15.4560eth-1/0/16.476eth-1/0/16.476eth-1/0/16.4760oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue6500110.226.0.20
cisco_test_5_advacisco_test_5_advaoc-ni-types:L3VRF65001:673oc-ni-types:INSTANCE_LABELeth-1/0/15.656eth-1/0/15.656eth-1/0/15.6560eth-1/" +[2025-02-03 12:02:00,649] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,649] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2051 bytes from start of buffer +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,650] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "0/16.676eth-1/0/16.676eth-1/0/16.6760oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue6500110.226.0.20" +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 3075 bytes from start of buffer +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "
cisco_test_6_advacisco_test_6_advaoc-ni-types:L3VRF65001:873oc-ni-types:INSTANCE_LABELoc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:B" +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 4106 bytes from start of buffer +[2025-02-03 12:02:00,651] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2478 bytes +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 363 bytes +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,652] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 4106 +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 4106 bytes, original size 4178 +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,653] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "MY_POLICY_BGPMY_POLICY_BGP11MY_AS_PATHANY22MY_STANDARD_COMMUNITY33" +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 72 bytes +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1027 bytes from start of buffer +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,654] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 363 bytes +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: setting start to 0 +[2025-02-03 12:02:00,655] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "4455150MY_AS_PATHMY_AS_PATH11MY_STANDARD_COMMUNITYMY_STANDARD_COMMUNITY11INLINEADD65000:123MY_EXTENDED_COMMUNITY" +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2054 bytes from start of buffer +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,656] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 373 bytes +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 414 bytes +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 414 bytes +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "MY_EXTENDED_COMMUNITY11INLINEADD" +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,657] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2474 bytes from start of buffer +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 363 bytes +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 363 bytes +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "GPBGPoc-pol-types:BGPBGPtrue6500110.226.0.20
" +[2025-02-03 12:02:00,658] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 369 bytes from start of buffer +[2025-02-03 12:02:00,659] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,659] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:02:00,660] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:02:00,660] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 373 bytes, original size 373 +[2025-02-03 12:02:00,660] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,665] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:02:00,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2478 bytes, original size 2478 +[2025-02-03 12:02:00,665] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,671] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1dummy10' +[2025-02-03 12:02:00,671] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/5.1eth-1/0/5.1eth-1/0/5.10' +[2025-02-03 12:02:00,671] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/9.33eth-1/0/9.33eth-1/0/9.330' +[2025-02-03 12:02:00,673] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:02:00,673] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,675] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.41eth-1/0/10.41eth-1/0/10.410' +[2025-02-03 12:02:00,675] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/19.55eth-1/0/19.55eth-1/0/19.550' +[2025-02-03 12:02:00,675] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111eth-1/0/22.111eth-1/0/22.1110' +[2025-02-03 12:02:00,676] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550' +[2025-02-03 12:02:00,676] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/26.357eth-1/0/26.357eth-1/0/26.3570' +[2025-02-03 12:02:00,676] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246eth-1/0/27.246eth-1/0/27.2460' +[2025-02-03 12:02:00,676] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123eth-1/0/12.123eth-1/0/12.1230' +[2025-02-03 12:02:00,677] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.41eth-1/0/10.41eth-1/0/10.410IPV4IPV4true' +[2025-02-03 12:02:00,677] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/19.55eth-1/0/19.55eth-1/0/19.550IPV4IPV4true' +[2025-02-03 12:02:00,677] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550IPV4IPV4true' +[2025-02-03 12:02:00,677] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1' +[2025-02-03 12:02:00,677] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1oc-ospf-types:NON_BROADCAST_NETWORK1truedummy1040105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55oc-ospf-types:POINT_TO_POINT_NETWORKoc-ospf-types:POINT_TO_POINT_NETWORK1eth-1/0/25.55040105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/26.357oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth0oc-ospf-types:BROADCAST_NETWORK140105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.41oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,678] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/19.55oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,679] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,679] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/9.33oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,679] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/5.1oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,679] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,679] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1falsetrueDISABLEBROADCAST11oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.1/325.5.5.1/3254PHP22oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.1/325.5.5.1/3254PHPfalse' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.41trueeth-1/0/10.41POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/10.410' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/19.55trueeth-1/0/19.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/19.550' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55trueeth-1/0/25.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/25.550' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth0falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/5.1falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,680] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/9.33falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,681] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,681] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,681] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/26.357falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,681] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,682] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/23.996eth-1/0/23.996eth-1/0/23.9960' +[2025-02-03 12:02:00,683] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/20.534eth-1/0/20.534eth-1/0/20.5340' +[2025-02-03 12:02:00,684] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/3.1eth-1/0/3.1eth-1/0/3.10' +[2025-02-03 12:02:00,685] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/15.456eth-1/0/15.456eth-1/0/15.4560' +[2025-02-03 12:02:00,686] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.476eth-1/0/16.476eth-1/0/16.4760' +[2025-02-03 12:02:00,686] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/15.656eth-1/0/15.656eth-1/0/15.6560' +[2025-02-03 12:02:00,687] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.676eth-1/0/16.676eth-1/0/16.6760' +[2025-02-03 12:02:00,688] INFO:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Requesting 'Get' +[2025-02-03 12:02:00,689] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Sync request, will wait for timeout=120 +[2025-02-03 12:02:00,789] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,789] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 6 bytes +[2025-02-03 12:02:00,789] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,790] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,790] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,790] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 143 bytes +[2025-02-03 12:02:00,790] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,791] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: setting start to 0 +[2025-02-03 12:02:00,791] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,791] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: starting +[2025-02-03 12:02:00,792] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: working with buffer of 153 bytes +[2025-02-03 12:02:00,792] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,792] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,792] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found chunk delimiter +[2025-02-03 12:02:00,792] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: chunk size 143 bytes +[2025-02-03 12:02:00,793] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: appending 143 bytes +[2025-02-03 12:02:00,793] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: fragment = "" +[2025-02-03 12:02:00,793] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: matching from 149 bytes from start of buffer +[2025-02-03 12:02:00,793] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,793] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: found end of message delimiter +[2025-02-03 12:02:00,794] DEBUG:ncclient.operations.rpc:[host 10.95.90.127 session-id 178] Delivering to +[2025-02-03 12:02:00,794] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: saving back rest of message after 153 bytes, original size 153 +[2025-02-03 12:02:00,800] DEBUG:ncclient.transport.parser:[host 10.95.90.127 session-id 178] _parse11: ending +[2025-02-03 12:02:00,812] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,812] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,812] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/device/service/DeviceServiceServicerImpl.py", line 139, in AddDevice + raise OperationFailedException('AddDevice', extra_details=errors) +common.method_wrappers.ServiceExceptions.OperationFailedException: Operation(AddDevice) failed; DeviceId(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap'); DeviceId(2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: starting +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: working with buffer of 2496 bytes +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,819] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1022 bytes +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1022 bytes +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "3121oc-acl:ACL_IPV43121oc-acl:ACL_IPV4101033.44.55.66/32oc-acl:DROPoc-acl:LOG_SYSLOGDROP-HTTPSoc-acl:ACL_IPV4DROP-HTTPSoc-acl:ACL_IPV4" +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 1029 bytes from start of buffer +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1110.100.200.4/32216.58.215.173/320oc-pkt-match-types:IP_TCP52982443oc-acl:DROPoc-acl:LOG_SYSLOGpruebascenario3oc-acl:ACL_IPV4pruebascenario3oc-acl:ACL_IPV41" +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2056 bytes from start of buffer +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found chunk delimiter +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: chunk size 430 bytes +[2025-02-03 12:02:00,820] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: appending 430 bytes +[2025-02-03 12:02:00,821] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: fragment = "1192.168.1.115/32oc-acl:DROPoc-acl:LOG_SYSLOG" +[2025-02-03 12:02:00,821] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: matching from 2492 bytes from start of buffer +[2025-02-03 12:02:00,821] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,821] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: found end of message delimiter +[2025-02-03 12:02:00,822] DEBUG:ncclient.operations.rpc:[host 10.95.90.126 session-id 656] Delivering to +[2025-02-03 12:02:00,822] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: saving back rest of message after 2496 bytes, original size 2496 +[2025-02-03 12:02:00,822] DEBUG:ncclient.transport.parser:[host 10.95.90.126 session-id 656] _parse11: ending +[2025-02-03 12:02:00,824] INFO:device.service.drivers.openconfig.templates.Acl:xml_acl_id = b'10' +[2025-02-03 12:02:00,825] INFO:device.service.drivers.openconfig.templates.Acl:xml_acl_id = b'1' +[2025-02-03 12:02:00,825] INFO:device.service.drivers.openconfig.templates.Acl:xml_acl_id = b'1' +[2025-02-03 12:02:00,867] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,867] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1021 bytes +[2025-02-03 12:02:00,867] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,867] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,868] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,868] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1007 bytes +[2025-02-03 12:02:00,868] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1007 bytes +[2025-02-03 12:02:00,868] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "defaultdefaultoc-ni-types:DEFAULT_INSTANCE5.5.5.5oc-pol-types:STATICoc-pol-types:BGPoc-types:IPV4oc-pol-types:STATICoc-types:IPV4oc-pol-types:BGPACCEPT_ROUTEoc-pol-types:DIRECTLY_CONNECTEDoc-pol-types:ISISoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4oc-pol-types:ISISACCEPT_ROUTEdummy1" +[2025-02-03 12:02:00,876] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1028 bytes from start of buffer +[2025-02-03 12:02:00,877] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,877] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,877] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:02:00,877] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:02:00,877] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "dummy1dummy10eth-1/0/10.50eth-1/0/10.50eth-1/0/10.500eth-1/0/16.125eth-1/0/16.125eth-1/0/16.1250eth-1/0/20.55eth-1/0/20.55eth-1/0/20.550eth-1/0/22.111eth-1/0/22.111eth-1/0/22.1110eth-1/0/23.125eth-1/0/23.125eth-1/0/23.1250eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550" +[2025-02-03 12:02:00,878] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 2058 bytes, original size 2058 +[2025-02-03 12:02:00,878] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,883] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,883] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 7 bytes +[2025-02-03 12:02:00,884] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,884] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,884] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,884] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,884] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,885] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,885] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,890] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(50f6fe52-9cbd-5e7b-b4ad-082a264c4452): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,890] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(50f6fe52-9cbd-5e7b-b4ad-082a264c4452): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,890] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/device/service/DeviceServiceServicerImpl.py", line 139, in AddDevice + raise OperationFailedException('AddDevice', extra_details=errors) +common.method_wrappers.ServiceExceptions.OperationFailedException: Operation(AddDevice) failed; DeviceId(50f6fe52-9cbd-5e7b-b4ad-082a264c4452): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap'); DeviceId(50f6fe52-9cbd-5e7b-b4ad-082a264c4452): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:00,891] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,894] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 2044 bytes +[2025-02-03 12:02:00,894] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,895] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,895] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,896] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1016 bytes +[2025-02-03 12:02:00,898] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1016 bytes +[2025-02-03 12:02:00,899] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/27.246eth-1/0/27.246eth-1/0/27.2460eth-1/0/10.69eth-1/0/10.69eth-1/0/10.690eth-1/0/12.123eth-1/0/12.123eth-1/0/12.1230oc-pol-types:BGPoc-types:IPV4oc-pol-types:BGPoc-types:IPV4
oc-pol-types:STATIC" +[2025-02-03 12:02:00,900] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1023 bytes from start of buffer +[2025-02-03 12:02:00,900] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,900] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,901] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1014 bytes +[2025-02-03 12:02:00,901] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1014 bytes +[2025-02-03 12:02:00,902] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "oc-types:IPV4oc-pol-types:STATICoc-types:IPV4
oc-pol-types:OSPFoc-types:IPV4oc-pol-types:OSPFoc-types:IPV4
oc-pol-types:ISISoc-types:IPV4oc-pol-types:ISISoc-types:IPV4
oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4oc-pol-types:DIRECTLY_CONNECTEDoc-types:IPV4
1116000239995.5.5.5" +[2025-02-03 12:02:00,906] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1026 bytes from start of buffer +[2025-02-03 12:02:00,906] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,906] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,907] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1015 bytes +[2025-02-03 12:02:00,907] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1015 bytes +[2025-02-03 12:02:00,907] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550IPV4IPV4truetrueIPV4IPV45.5.5.15.5.5.1true5.5.5.65.5.5.6true" +[2025-02-03 12:02:00,908] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2048 bytes from start of buffer +[2025-02-03 12:02:00,908] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,908] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,908] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1017 bytes +[2025-02-03 12:02:00,909] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1017 bytes +[2025-02-03 12:02:00,909] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "dummy1dummy111MPLS1oc-pol-types:OSPFOSPFoc-pol-types:OSPFOSPFtrue0.0.0.00.0.0.0dummy1dummy1oc-ospf-types:NON_BROADCAST_NETWORK1true" +[2025-02-03 12:02:00,909] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3072 bytes from start of buffer +[2025-02-03 12:02:00,910] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,910] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,910] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,910] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,911] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 3072 +[2025-02-03 12:02:00,911] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3072 bytes, original size 4096 +[2025-02-03 12:02:00,911] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,911] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,911] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 1024 bytes +[2025-02-03 12:02:00,912] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,912] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,912] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,912] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,912] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,913] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,913] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,913] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,913] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,914] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 5120 bytes +[2025-02-03 12:02:00,914] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,916] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,916] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,916] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1024 bytes +[2025-02-03 12:02:00,917] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1024 bytes +[2025-02-03 12:02:00,917] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "dummy1040105eth-1/0/25.55eth-1/0/25.55oc-ospf-types:POINT_TO_POINT_NETWORKoc-ospf-types:POINT_TO_POINT_NETWORK1eth-1/0/25.55040105eth0oc-ospf-typ" +[2025-02-03 12:02:00,917] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,918] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,918] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,918] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1001 bytes +[2025-02-03 12:02:00,918] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1001 bytes +[2025-02-03 12:02:00,919] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "es:BROADCAST_NETWORK140105eth-1/0/10.50oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/20.55oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/27.246oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/22.111oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/16.125oc-ospf-types:POINT_TO_POINT_NETWORK140105" +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3060 bytes from start of buffer +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1010 bytes +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1010 bytes +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/23.125oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/10.69oc-ospf-types:POINT_TO_POINT_NETWORK140105eth-1/0/12.123oc-ospf-types:POINT_TO_POINT_NETWORK14010" +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4077 bytes from start of buffer +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,920] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1019 bytes +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1019 bytes +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "5oc-pol-types:ISISISISoc-pol-types:ISISISIStrue49.0004.0050.0500.5005.00LEVEL_22true2WIDE_METRICtruedummy1dummy1falsetrueDISABLEBROADCAST" +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 5103 bytes from start of buffer +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,921] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 5103 +[2025-02-03 12:02:00,922] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 5103 bytes, original size 5120 +[2025-02-03 12:02:00,922] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,922] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,922] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 17 bytes +[2025-02-03 12:02:00,922] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,923] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,923] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,923] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,923] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4113 bytes +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,924] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,925] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,925] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 994 bytes +[2025-02-03 12:02:00,925] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 994 bytes +[2025-02-03 12:02:00,925] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "11oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.5/325.5.5.5/3255PHP22oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.5/325.5.5.5/3255PHPfalseeth-1/0/20.55trueeth-1/0/20.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalse" +[2025-02-03 12:02:00,926] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2031 bytes from start of buffer +[2025-02-03 12:02:00,926] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,926] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,926] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1023 bytes +[2025-02-03 12:02:00,926] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1023 bytes +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "eth-1/0/20.550eth-1/0/25.55trueeth-1/0/25.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/25.550eth0falsetrueDISABLEBROADCASTfalseeth-1/0/10.50falsetrueDISABLEBROADCAST" +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3061 bytes from start of buffer +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "falseeth-1/0/10.69falsetrueDISABLEBROADCASTfalseeth-1/0/12.123falsetrueDISABLEBROADCASTfalseeth-1/0/16.125falsetrueDISABLEBROADCASTfalseeth-1/0/22.111falsetrueDISABLEBROADCAST" +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 4088 bytes from start of buffer +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,927] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 991 bytes +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 4088 +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 4088 bytes, original size 4113 +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: still have data, may have another full message! +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 25 bytes +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 991 bytes +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,928] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 4121 bytes +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 991 bytes +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 991 bytes +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "falseeth-1/0/23.125falsetrueDISABLEBROADCASTfalseeth-1/0/27.246falsetrueDISABLEBROADCASTfalseoc-pol-types:BGPBGPoc-pol-types:BGPBGPtrue650015.5.5.5oc-bgp-types:L3VPN_IPV4_UNICASToc-bgp-types:L3VPN_IPV4_UNICASTtrueoc-bgp-types:L3VPN_IPV6_UNICASToc-bgp-types:L3VPN_IPV6_UNICASTtrue5.5.5.15.5.5.16500105.5.5.1true650010EXTERNALCONNECT484760.0" +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2014 bytes from start of buffer +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,929] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 976 bytes +[2025-02-03 12:02:00,930] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 976 bytes +[2025-02-03 12:02:00,930] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "0.00.0false5.5.5.55.5.5.1true1false1falseoc-bgp-types:IPV4_UNICASToc-bgp-types:IPV4_UNICASTtrueoc-bgp-types:L3VPN_IPV4_UNICASToc-bgp-types:L3VPN_IPV4_UNICASTtrueoc-bgp-types:L3VPN_IPV6_UNICASToc-bgp-types:L3VPN_IPV6_UNICASTtrue5.5.5.65.5.5.665001true410.95.90.12610.95.90.1266500110.95.90.125oc-pol-types:STATICSTATICoc-pol-types:STATICSTATIC0.0.0.0/00.0.0.0/010.95.90.110.95.90.110.95.90.110.95.0.0/1610.95.0.0/1610.95.90.110.95.90.110.95.90.110.95.90.149/3210.95.90.149/325.5.5.65.5.5.65.5.5.6192.168.11.0/24192.16" +[2025-02-03 12:02:00,933] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 1031 bytes from start of buffer +[2025-02-03 12:02:00,933] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,933] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,933] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1021 bytes +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1021 bytes +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "8.11.0/2499.5.20.199.5.20.199.5.20.1192.168.27.0/24192.168.27.0/2410.95.86.14510.95.86.14510.95.86.145192.168.165.0/24192.168.165.0/2410.95.86.19310.95.86.19310.95.86.19310.210.181.0/2410.210.181.0/24172.16.3.2172.16.3.2172.16.3.2192.168.11.72/30192.168.11.72/30" +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 2059 bytes from start of buffer +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=7 +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 1020 bytes +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 1020 bytes +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "172.16.2.2172.16.2.2172.16.2.2192.168.12.0/24192.168.12.0/24172.16.2.2172.16.2.2172.16.2.2192.168.13.0/24192.168.13.0/24172.16.2.2172.16.2.2172.16.2.2oc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTEDoc-pol-types:DIRECTLY_CONNECTEDDIRECTLY_CONNECTED
" +[2025-02-03 12:02:00,934] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3086 bytes from start of buffer +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 420 bytes +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 420 bytes +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "borrarinterfazborrarinterfazoc-ni-types:L3VRFoc-ni-types:INSTANCE_LABEL
" +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 3512 bytes from start of buffer +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:00,935] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:02:00,939] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:02:00,939] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 3516 bytes, original size 3516 +[2025-02-03 12:02:00,939] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:00,941] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1dummy10' +[2025-02-03 12:02:00,941] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.50eth-1/0/10.50eth-1/0/10.500' +[2025-02-03 12:02:00,941] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.125eth-1/0/16.125eth-1/0/16.1250' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/20.55eth-1/0/20.55eth-1/0/20.550' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111eth-1/0/22.111eth-1/0/22.1110' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/23.125eth-1/0/23.125eth-1/0/23.1250' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246eth-1/0/27.246eth-1/0/27.2460' +[2025-02-03 12:02:00,942] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.69eth-1/0/10.69eth-1/0/10.690' +[2025-02-03 12:02:00,943] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123eth-1/0/12.123eth-1/0/12.1230' +[2025-02-03 12:02:00,943] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55eth-1/0/25.550IPV4IPV4true' +[2025-02-03 12:02:00,943] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1' +[2025-02-03 12:02:00,943] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1oc-ospf-types:NON_BROADCAST_NETWORK1truedummy1040105' +[2025-02-03 12:02:00,943] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55eth-1/0/25.55oc-ospf-types:POINT_TO_POINT_NETWORKoc-ospf-types:POINT_TO_POINT_NETWORK1eth-1/0/25.55040105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth0oc-ospf-types:BROADCAST_NETWORK140105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.50oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/20.55oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,944] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.125oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,945] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/23.125oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,945] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.69oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,945] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123oc-ospf-types:POINT_TO_POINT_NETWORK140105' +[2025-02-03 12:02:00,945] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'dummy1dummy1falsetrueDISABLEBROADCAST11oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.5/325.5.5.5/3255PHP22oc-isis-types:IPV4oc-isis-types:UNICASToc-isis-types:IPV4oc-isis-types:UNICAST5.5.5.5/325.5.5.5/3255PHPfalse' +[2025-02-03 12:02:00,945] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/20.55trueeth-1/0/20.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/20.550' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/25.55trueeth-1/0/25.55POINT_TO_POINTtruetrueDISABLEPOINT_TO_POINTfalseeth-1/0/25.550' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth0falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.50falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/10.69falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/12.123falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,946] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/16.125falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,947] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/22.111falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,947] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/23.125falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,947] INFO:device.service.drivers.openconfig.templates.NetworkInstances:xml_interfaces = b'eth-1/0/27.246falsetrueDISABLEBROADCASTfalse' +[2025-02-03 12:02:00,948] INFO:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Requesting 'Get' +[2025-02-03 12:02:00,948] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Sync request, will wait for timeout=120 +[2025-02-03 12:02:01,068] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 6 bytes +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 143 bytes +[2025-02-03 12:02:01,069] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: not enough data for chunk yet +[2025-02-03 12:02:01,071] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: setting start to 0 +[2025-02-03 12:02:01,071] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:01,071] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: starting +[2025-02-03 12:02:01,071] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: working with buffer of 153 bytes +[2025-02-03 12:02:01,071] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 0 bytes from start of buffer +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=6 +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found chunk delimiter +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: chunk size 143 bytes +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: appending 143 bytes +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: fragment = "" +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: matching from 149 bytes from start of buffer +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: regular expression start=0, end=4 +[2025-02-03 12:02:01,072] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: found end of message delimiter +[2025-02-03 12:02:01,073] DEBUG:ncclient.operations.rpc:[host 10.95.90.125 session-id 728] Delivering to +[2025-02-03 12:02:01,073] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: saving back rest of message after 153 bytes, original size 153 +[2025-02-03 12:02:01,084] DEBUG:ncclient.transport.parser:[host 10.95.90.125 session-id 728] _parse11: ending +[2025-02-03 12:02:01,093] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(fd28848d-18e7-5cb5-bb02-4085d088eede): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:01,093] ERROR:device.service.DeviceServiceServicerImpl:DeviceId(fd28848d-18e7-5cb5-bb02-4085d088eede): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') +[2025-02-03 12:02:01,093] ERROR:device.service.DeviceServiceServicerImpl:AddDevice exception +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/device/service/DeviceServiceServicerImpl.py", line 139, in AddDevice + raise OperationFailedException('AddDevice', extra_details=errors) +common.method_wrappers.ServiceExceptions.OperationFailedException: Operation(AddDevice) failed; DeviceId(fd28848d-18e7-5cb5-bb02-4085d088eede): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap'); DeviceId(fd28848d-18e7-5cb5-bb02-4085d088eede): Unable to Get Resource(key=__endpoints__); Error(parse() missing 1 required positional argument: 'device_sap') diff --git a/logsContext.txt b/logsContext.txt new file mode 100644 index 000000000..9deabbd56 --- /dev/null +++ b/logsContext.txt @@ -0,0 +1,737 @@ +[2024-12-17 09:31:49,273] INFO:__main__:Starting... +[2024-12-17 09:31:49,279] INFO:__main__:Getting SQLAlchemy DB Engine... +[2024-12-17 09:31:58,495] INFO:common.message_broker.Factory:Selected MessageBroker Backend: nats +[2024-12-17 09:31:58,543] INFO:context.service.ContextService:Starting Service (tentative endpoint: 0.0.0.0:1010, max_workers: 200)... +[2024-12-17 09:31:58,552] INFO:context.service.ContextService:Listening on 0.0.0.0:1010... +[2024-12-17 09:31:58,553] INFO:common.message_broker.backend.nats.NatsBackendThread:[_run_publisher] NATS URI: nats://nats.nats.svc.cluster.local:4222 +[2024-12-17 09:31:58,574] INFO:common.message_broker.backend.nats.NatsBackendThread:[_run_publisher] Connected! +[2024-12-17 09:32:23,024] INFO:common.message_broker.backend.nats.NatsBackendThread:[subscribe] Waiting for subscriber to be ready... +[2024-12-17 09:33:58,675] INFO:common.message_broker.backend.nats.NatsBackendThread:[_run_subscriber] NATS URI: nats://nats.nats.svc.cluster.local:4222 +[2024-12-17 09:33:58,685] INFO:common.message_broker.backend.nats.NatsBackendThread:[_run_subscriber] Connected! NATS Server version: +[2024-12-17 09:33:58,685] INFO:common.message_broker.backend.nats.NatsBackendThread:[_run_subscriber] Subscribed! +[2024-12-17 09:33:58,686] INFO:common.message_broker.backend.nats.NatsBackendThread:[subscribe] Subscriber is Ready? True +[2024-12-18 11:44:52,479] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.OperationalError: SSL SYSCALL error: EOF detected + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 103, in _txn_retry_loop + with _NestedTransaction(conn): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 64, in __enter__ + self.conn.connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1545, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1555, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 760, in _connection_for_bind + transaction = conn.begin_nested() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/future/engine.py", line 192, in begin_nested + return super(Connection, self).begin_nested() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 927, in begin_nested + return NestedTransaction(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2722, in __init__ + self._savepoint = self.connection._savepoint_impl() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1108, in _savepoint_impl + self.engine.dialect.do_savepoint(self, name) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/base.py", line 534, in do_savepoint + connection.execute(text("SAVEPOINT cockroach_restart")) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/future/engine.py", line 286, in execute + return self._execute_20( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) SSL SYSCALL error: EOF detected + +[SQL: SAVEPOINT cockroach_restart] +(Background on this error at: https://sqlalche.me/e/14/e3q8) +[2024-12-18 11:47:07,309] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 11:47:33,481] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 11:51:50,882] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 11:53:26,513] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:02:26,758] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:02:30,572] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:02:32,512] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:03:45,357] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:06:33,366] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-18 12:09:08,847] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-19 08:22:23,892] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-19 08:23:28,338] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) +[2024-12-19 08:45:24,886] ERROR:context.service.ContextServiceServicerImpl:ListContexts exception +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +psycopg2.errors.UndefinedTable: relation "context" does not exist + + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/var/teraflow/common/method_wrappers/Decorator.py", line 220, in inner_wrapper + reply = func(self, request, grpc_context) + File "/var/teraflow/context/service/ContextServiceServicerImpl.py", line 94, in ListContexts + return context_list_objs(self.db_engine) + File "/var/teraflow/context/service/database/Context.py", line 46, in context_list_objs + contexts = run_transaction(sessionmaker(bind=db_engine), callback) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 42, in run_transaction + return _txn_retry_loop(session, callback, max_retries, max_backoff) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy_cockroachdb/transaction.py", line 104, in _txn_retry_loop + ret = callback(conn) + File "/var/teraflow/context/service/database/Context.py", line 40, in callback + obj_list : List[ContextModel] = session.query(ContextModel)\ + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2773, in all + return self._iter().all() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter + result = self.session.execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute + result = conn._execute_20(statement, params or {}, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 + return meth(self, args_10style, kwargs_10style, execution_options) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection + return connection._execute_clauseelement( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement + ret = self._execute_context( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context + self._handle_dbapi_exception( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context + self.dialect.do_execute( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405) diff --git a/logsUI.txt b/logsUI.txt new file mode 100644 index 000000000..77be3f53d --- /dev/null +++ b/logsUI.txt @@ -0,0 +1,33523 @@ +INFO:__main__:Starting... +INFO:bgpls_speaker.client.BgplsClient:Creating channel to bgpls-speakerservice:20030... +INFO:bgpls_speaker.client.BgplsClient:Channel created + * Serving Flask app 'webui.service' + * Debug mode: off +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:8004 + * Running on http://10.1.181.255:8004 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:53] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:53] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:53] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:53] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "POST / HTTP/1.1" 302 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /static/topology_icons/emu-packet-router.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /static/topology_icons/emu-datacenter.png HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:38:56] "GET /static/topology_icons/emu-open-line-system.png HTTP/1.1" 304 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:22] "GET /service/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:22] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:26] "GET /slice/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:27] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:28] "GET /service/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:28] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /static/topology_icons/emu-packet-router.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /static/topology_icons/emu-open-line-system.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:37] "GET /static/topology_icons/emu-datacenter.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:39] "GET /service/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:45:39] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:46:47] "GET /slice/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:46:47] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:46:50] "GET /service/ HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:46:51] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:50:48] "GET /service/029d1df8-95c7-4bf3-86bc-dcd63e4bb7ad/detail HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 09:50:48] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 09:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 10:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 11:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 12:48:32] "GET /service/ HTTP/1.1" 302 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 12:48:32] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 12:48:33] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 12:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:02:52] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:02:52] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:02:53] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:02:53] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:03:03] "GET /device/ HTTP/1.1" 302 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:03:03] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:03:03] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:03:03] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [17/Dec/2024 13:03:03] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 13:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 14:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 15:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 16:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 17:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 18:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 19:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 20:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 21:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 22:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [17/Dec/2024 23:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 00:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 01:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 02:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 03:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 04:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 05:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 06:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 07:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 08:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 09:16:16] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 09:32:24] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 09:32:24] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 09:32:24] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 09:32:24] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:57:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:58:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 09:59:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:00:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:01:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:02:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:03:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:04:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:05:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:06:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:07:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 10:08:20] "GET / HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 10:08:20] "GET /static/TeraFlow%20SDN%20Logo%20ScreenColour%20with%20Slogan.png HTTP/1.1" 304 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 10:08:20] "GET /js/topology.js HTTP/1.1" 200 - +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 10:08:20] "GET /topology HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:08:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:09:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:10:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:11:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:12:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:13:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:14:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:15:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:16:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:17:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:18:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:19:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:20:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:21:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:22:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:23:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:24:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:25:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:26:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:27:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:28:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:29:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:30:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:31:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:32:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:33:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:34:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:35:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:36:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:37:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:38:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:39:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:40:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:41:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:42:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:43:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:44:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:45:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:46:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:47:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:48:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:49:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:50:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:51:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:52:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:53:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:54:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:55:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:01] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:01] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:11] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:11] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:21] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:21] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:31] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:31] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:41] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:41] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:51] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 10:56:51] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:13] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:18] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:19] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:35] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:07:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:25] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:08:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:09:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:10:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:11:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:12:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:13:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:14:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:15:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:16:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:17:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:18:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:19:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:20:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:21:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:22:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:23:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:24:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:25:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:26:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:27:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:28:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:29:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:30:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:34] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:44] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:44] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:54] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:31:54] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:04] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:04] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:14] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:14] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:24] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:24] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:34] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:36] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:47] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:47] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:57] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:32:58] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 11:42:43] "GET /healthz/ready HTTP/1.1" 200 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734522427.349267063","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 11:47:07] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734522453.489337059","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 11:47:33] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734522710.908549009","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 11:51:50] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734522806.533082076","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 11:53:26] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523346.766531812","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:02:26] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523350.574021153","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:02:30] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523352.514407445","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:02:32] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523425.368622263","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:03:45] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523593.378885690","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:06:33] "GET / HTTP/1.1" 500 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734523748.859340476","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [18/Dec/2024 12:09:08] "GET / HTTP/1.1" 500 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 12:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 13:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 14:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 15:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 16:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 17:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 18:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 19:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 20:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 21:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 22:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [18/Dec/2024 23:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 00:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 01:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 02:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 03:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 04:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 05:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 06:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:27:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:28:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:29:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:30:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:31:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:32:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:33:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:34:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:35:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:36:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:37:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:38:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:39:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:40:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:41:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:42:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:43:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:44:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:45:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:46:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:47:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:48:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:49:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:50:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:51:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:52:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:53:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:54:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:55:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:56:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:57:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:58:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 07:59:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:00:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:01:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:02:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:03:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:04:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:05:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:06:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:07:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:08:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:09:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:10:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:11:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:12:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:13:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:14:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:15:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:16:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:17:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:18:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:19:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:20:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:21:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:22] "GET /healthz/ready HTTP/1.1" 200 - +ERROR:webui.service:Exception on / [GET] +Traceback (most recent call last): + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app + response = self.full_dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "/home/webui/venv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + File "/home/webui/teraflow/webui/service/main/routes.py", line 61, in home + contexts : ContextList = context_client.ListContexts(Empty()) + File "/home/webui/teraflow/common/tools/client/RetryDecorator.py", line 75, in wrapper + return func(self, *args, **kwargs) + File "/home/webui/teraflow/context/client/ContextClient.py", line 74, in ListContexts + response = self.stub.ListContexts(request) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 946, in __call__ + return _end_unary_response_blocking(state, call, False, None) + File "/home/webui/venv/lib/python3.9/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking + raise _InactiveRpcError(state) +grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: + status = StatusCode.INTERNAL + details = "(psycopg2.errors.UndefinedTable) relation "context" does not exist + +[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at +FROM context] +(Background on this error at: https://sqlalche.me/e/14/f405)" + debug_error_string = "{"created":"@1734596543.895845281","description":"Error received from peer ipv4:10.152.183.18:1010","file":"src/core/lib/surface/call.cc","file_line":966,"grpc_message":"(psycopg2.errors.UndefinedTable) relation "context" does not exist\n\n[SQL: SELECT context.context_uuid AS context_context_uuid, context.context_name AS context_context_name, context.created_at AS context_created_at, context.updated_at AS context_updated_at \nFROM context]\n(Background on this error at: https://sqlalche.me/e/14/f405)","grpc_status":13}" +> +INFO:werkzeug:10.1.181.221 - - [19/Dec/2024 08:22:23] "GET / HTTP/1.1" 500 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:22:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:23:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:24:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:52] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:25:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:02] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:02] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:12] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:12] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:22] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:22] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:32] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:32] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:42] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:42] "GET /healthz/ready HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:52] "GET /healthz/live HTTP/1.1" 200 - +INFO:werkzeug:10.95.86.62 - - [19/Dec/2024 08:26:52] "GET /healthz/ready HTTP/1.1" 200 - diff --git a/manifests/deviceservice.yaml b/manifests/deviceservice.yaml index 950b98442..ef5195eae 100644 --- a/manifests/deviceservice.yaml +++ b/manifests/deviceservice.yaml @@ -39,7 +39,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL - value: "INFO" + value: "DEBUG" startupProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:2020"] diff --git a/manifests/nbiservice.yaml b/manifests/nbiservice.yaml index 55accdc44..46d314f8e 100644 --- a/manifests/nbiservice.yaml +++ b/manifests/nbiservice.yaml @@ -42,7 +42,7 @@ spec: env: - name: LOG_LEVEL value: "INFO" - - name: IETF_NETWORK_RENDERER + - name: IETF_NETWORK_RENDERER #PYANGBIND value: "LIBYANG" - name: WS_E2E_PORT value: "8762" diff --git a/my_deploy.sh b/my_deploy.sh index a048edb30..1bfe62cdd 100755 --- a/my_deploy.sh +++ b/my_deploy.sh @@ -23,7 +23,7 @@ export TFS_REGISTRY_IMAGES="http://localhost:32000/tfs/" export TFS_COMPONENTS="context device pathcomp service slice nbi webui" # Uncomment to activate Monitoring (old) -#export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" +export TFS_COMPONENTS="${TFS_COMPONENTS} monitoring" # Uncomment to activate Monitoring Framework (new) #export TFS_COMPONENTS="${TFS_COMPONENTS} kpi_manager kpi_value_writer kpi_value_api telemetry analytics automation" @@ -134,7 +134,7 @@ export CRDB_PASSWORD="tfs123" export CRDB_DEPLOY_MODE="single" # Disable flag for dropping database, if it exists. -export CRDB_DROP_DATABASE_IF_EXISTS="" +export CRDB_DROP_DATABASE_IF_EXISTS="YES" #PONER YES PARA BORRAR TABLES # Disable flag for re-deploying CockroachDB from scratch. export CRDB_REDEPLOY="" @@ -186,7 +186,7 @@ export QDB_TABLE_MONITORING_KPIS="tfs_monitoring_kpis" export QDB_TABLE_SLICE_GROUPS="tfs_slice_groups" # Disable flag for dropping tables if they exist. -export QDB_DROP_TABLES_IF_EXIST="" +export QDB_DROP_TABLES_IF_EXIST="YES" #PONER YES PARA BORRAR TABLES # Disable flag for re-deploying QuestDB from scratch. export QDB_REDEPLOY="" diff --git a/nbiLogs.txt b/nbiLogs.txt new file mode 100644 index 000000000..2d35447da --- /dev/null +++ b/nbiLogs.txt @@ -0,0 +1,26 @@ +INFO:__main__:Starting... +INFO:nbi.service.NbiServiceServicerImpl:Creating Servicer... +INFO:nbi.service.NbiServiceServicerImpl:Servicer Created +INFO:nbi.service.NbiService:Starting Service (tentative endpoint: 0.0.0.0:9090, max_workers: 200)... +INFO:nbi.service.NbiService:Listening on 0.0.0.0:9090... +INFO:nbi.service.context_subscription:Running subscription server...: 0.0.0.0:8762 +INFO:nbi.service.rest_server.RestServer:Listening on http://0.0.0.0:8080... +INFO:nbi.service.rest_server.RestServer:[2024-Dec-20 11:00] 10.1.181.237 GET /restconf/data/ietf-network:networks/sap? 401 UNAUTHORIZED +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Request: +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-network +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-network-topology +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-l3-unicast-topology +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Contexts detected: [] +INFO:nbi.service.rest_server.RestServer:[2024-Dec-20 11:00] 10.1.181.237 GET /restconf/data/ietf-network:networks/sap? 200 OK +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Request: +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-network +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-network-topology +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.YangHandler:Loading module: ietf-l3-unicast-topology +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Contexts detected: ['admin'] +INFO:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Topologies detected for context admin: ['admin'] +ERROR:nbi.service.rest_server.nbi_plugins.ietf_sap_topology.SAP_Topology:Something went wrong Retrieving Topology() +Traceback (most recent call last): + File "/var/teraflow/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/SAP_Topology.py", line 98, in get + network_reply = yang_handler.compose_network(topology_name, topology_details) +AttributeError: 'YangHandler' object has no attribute 'compose_network' +INFO:nbi.service.rest_server.RestServer:[2024-Dec-20 11:05] 10.1.181.237 GET /restconf/data/ietf-network:networks/sap? 500 INTERNAL SERVER ERROR diff --git a/quick_deploy.sh b/quick_deploy.sh new file mode 100755 index 000000000..57c196184 --- /dev/null +++ b/quick_deploy.sh @@ -0,0 +1,438 @@ +#!/bin/bash +# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# +# 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. + + +######################################################################################################################## +# Read deployment settings +######################################################################################################################## + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# If not already set, set the URL of the Docker registry where the images will be uploaded to. +# By default, assume internal MicroK8s registry is used. +export TFS_REGISTRY_IMAGES=${TFS_REGISTRY_IMAGES:-"http://localhost:32000/tfs/"} + +# If not already set, set the list of components, separated by spaces, you want to build images for, and deploy. +# By default, only basic components are deployed +export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device pathcomp service slice nbi webui"} + +# If not already set, set the tag you want to use for your images. +export TFS_IMAGE_TAG=${TFS_IMAGE_TAG:-"dev"} + +# If not already set, set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +# If not already set, set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} + +# If not already set, set the new Grafana admin password +export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"} + +# If not already set, disable skip-build flag to rebuild the Docker images. +# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used. +export TFS_SKIP_BUILD=${TFS_SKIP_BUILD:-"YES"} + +# If TFS_SKIP_BUILD is "YES", select the containers to be build +# Any other container will use previous docker images +export TFS_QUICK_COMPONENTS="nbi" + +# ----- CockroachDB ------------------------------------------------------------ + +# If not already set, set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE=${CRDB_NAMESPACE:-"crdb"} + +# If not already set, set the database username to be used by Context. +export CRDB_USERNAME=${CRDB_USERNAME:-"tfs"} + +# If not already set, set the database user's password to be used by Context. +export CRDB_PASSWORD=${CRDB_PASSWORD:-"tfs123"} + +# If not already set, set the database name to be used by Context. +export CRDB_DATABASE=${CRDB_DATABASE:-"tfs"} + + +# ----- NATS ------------------------------------------------------------------- + +# If not already set, set the namespace where NATS will be deployed. +export NATS_NAMESPACE=${NATS_NAMESPACE:-"nats"} + + +# ----- QuestDB ---------------------------------------------------------------- + +# If not already set, set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE=${QDB_NAMESPACE:-"qdb"} + +# If not already set, set the database username to be used for QuestDB. +export QDB_USERNAME=${QDB_USERNAME:-"admin"} + +# If not already set, set the database user's password to be used for QuestDB. +export QDB_PASSWORD=${QDB_PASSWORD:-"quest"} + +# If not already set, set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS:-"tfs_monitoring_kpis"} + +# If not already set, set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS:-"tfs_slice_groups"} + + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +# Constants +GITLAB_REPO_URL="labs.etsi.org:5050/tfs/controller" +TMP_FOLDER="./tmp" + +# Create a tmp folder for files modified during the deployment +TMP_MANIFESTS_FOLDER="$TMP_FOLDER/manifests" +mkdir -p $TMP_MANIFESTS_FOLDER +TMP_LOGS_FOLDER="$TMP_FOLDER/logs" +mkdir -p $TMP_LOGS_FOLDER + +echo "Deleting and Creating a new namespace..." +kubectl delete namespace $TFS_K8S_NAMESPACE --ignore-not-found +kubectl create namespace $TFS_K8S_NAMESPACE +printf "\n" + +echo "Create secret with CockroachDB data" +CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') +kubectl create secret generic crdb-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ + --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ + --from-literal=CRDB_DATABASE=${CRDB_DATABASE} \ + --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ + --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ + --from-literal=CRDB_SSLMODE=require +printf "\n" + +echo "Create secret with NATS data" +NATS_CLIENT_PORT=$(kubectl --namespace ${NATS_NAMESPACE} get service nats -o 'jsonpath={.spec.ports[?(@.name=="client")].port}') +kubectl create secret generic nats-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=NATS_NAMESPACE=${NATS_NAMESPACE} \ + --from-literal=NATS_CLIENT_PORT=${NATS_CLIENT_PORT} +printf "\n" + +echo "Create secret with QuestDB data" +QDB_HTTP_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="http")].port}') +QDB_ILP_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="ilp")].port}') +QDB_SQL_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') +METRICSDB_HOSTNAME="questdb-public.${QDB_NAMESPACE}.svc.cluster.local" +kubectl create secret generic qdb-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=QDB_NAMESPACE=${QDB_NAMESPACE} \ + --from-literal=METRICSDB_HOSTNAME=${METRICSDB_HOSTNAME} \ + --from-literal=METRICSDB_REST_PORT=${QDB_HTTP_PORT} \ + --from-literal=METRICSDB_ILP_PORT=${QDB_ILP_PORT} \ + --from-literal=METRICSDB_SQL_PORT=${QDB_SQL_PORT} \ + --from-literal=METRICSDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS} \ + --from-literal=METRICSDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS} \ + --from-literal=METRICSDB_USERNAME=${QDB_USERNAME} \ + --from-literal=METRICSDB_PASSWORD=${QDB_PASSWORD} +printf "\n" + +echo "Deploying components and collecting environment variables..." +ENV_VARS_SCRIPT=tfs_runtime_env_vars.sh +echo "# Environment variables for TeraFlowSDN deployment" > $ENV_VARS_SCRIPT +PYTHONPATH=$(pwd)/src +echo "export PYTHONPATH=${PYTHONPATH}" >> $ENV_VARS_SCRIPT + +for COMPONENT in $TFS_COMPONENTS; do + echo "Processing '$COMPONENT' component..." + + if [ "$TFS_SKIP_BUILD" != "YES" ]; then + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" + + if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" + elif [ "$COMPONENT" == "pathcomp" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log" + docker build -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . > "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log" + docker build -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . > "$BUILD_LOG" + # next command is redundant, but helpful to keep cache updated between rebuilds + IMAGE_NAME="$COMPONENT-backend:$TFS_IMAGE_TAG-builder" + docker build -t "$IMAGE_NAME" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-connector.log" + docker build -t "$COMPONENT-connector:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/connector/Dockerfile . > "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-gateway.log" + docker build -t "$COMPONENT-gateway:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/gateway/Dockerfile . > "$BUILD_LOG" + else + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" + fi + + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGES'..." + + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log" + docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log" + docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-connector.log" + docker tag "$COMPONENT-connector:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-connector.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-gateway.log" + docker tag "$COMPONENT-gateway:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-gateway.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + else + for QUICK_COMPONENT in $TFS_QUICK_COMPONENTS; do + if [ "$COMPONENT" == "$QUICK_COMPONENT" ]; then + + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${QUICK_COMPONENT}.log" + + docker build -t "$QUICK_COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$QUICK_COMPONENT"/Dockerfile . > "$BUILD_LOG" + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGES'..." + + + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$QUICK_COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${QUICK_COMPONENT}.log" + docker tag "$QUICK_COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${QUICK_COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + done + fi + + echo " Adapting '$COMPONENT' manifest file..." + MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml" + cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" + + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-connector:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-connector:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-gateway:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-gateway:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + fi + + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" + + # TODO: harmonize names of the monitoring component + + echo " Deploying '$COMPONENT' component to Kubernetes..." + DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log" + kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG" + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + + echo " Collecting env-vars for '$COMPONENT' component..." + + SERVICE_DATA=$(kubectl get service ${COMPONENT_OBJNAME}service --namespace $TFS_K8S_NAMESPACE -o json) + if [ -z "${SERVICE_DATA}" ]; then continue; fi + + # Env vars for service's host address + SERVICE_HOST=$(echo ${SERVICE_DATA} | jq -r '.spec.clusterIP') + if [ -z "${SERVICE_HOST}" ]; then continue; fi + ENVVAR_HOST=$(echo "${COMPONENT}service_SERVICE_HOST" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_HOST}=${SERVICE_HOST}" >> $ENV_VARS_SCRIPT + + # Env vars for service's 'grpc' port (if any) + SERVICE_PORT_GRPC=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="grpc") | .port') + if [ -n "${SERVICE_PORT_GRPC}" ]; then + ENVVAR_PORT_GRPC=$(echo "${COMPONENT}service_SERVICE_PORT_GRPC" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_GRPC}=${SERVICE_PORT_GRPC}" >> $ENV_VARS_SCRIPT + fi + + # Env vars for service's 'http' port (if any) + SERVICE_PORT_HTTP=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="http") | .port') + if [ -n "${SERVICE_PORT_HTTP}" ]; then + ENVVAR_PORT_HTTP=$(echo "${COMPONENT}service_SERVICE_PORT_HTTP" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_HTTP}=${SERVICE_PORT_HTTP}" >> $ENV_VARS_SCRIPT + fi + + printf "\n" +done + +echo "Deploying extra manifests..." +for EXTRA_MANIFEST in $TFS_EXTRA_MANIFESTS; do + echo "Processing manifest '$EXTRA_MANIFEST'..." + if [[ "$EXTRA_MANIFEST" == *"servicemonitor"* ]]; then + kubectl apply -f $EXTRA_MANIFEST + else + kubectl --namespace $TFS_K8S_NAMESPACE apply -f $EXTRA_MANIFEST + fi + printf "\n" +done +printf "\n" + +for COMPONENT in $TFS_COMPONENTS; do + echo "Waiting for '$COMPONENT' component..." + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") + kubectl wait --namespace $TFS_K8S_NAMESPACE \ + --for='condition=available' --timeout=300s deployment/${COMPONENT_OBJNAME}service + printf "\n" +done + +if [[ "$TFS_COMPONENTS" == *"webui"* ]] && [[ "$TFS_COMPONENTS" == *"monitoring"* ]]; then + echo "Configuring WebUI DataStores and Dashboards..." + sleep 5 + + # Exposed through the ingress controller "tfs-ingress" + GRAFANA_URL="127.0.0.1:80/grafana" + + # Default Grafana credentials + GRAFANA_USERNAME="admin" + GRAFANA_PASSWORD="admin" + + # Configure Grafana Admin Password + # Ref: https://grafana.com/docs/grafana/latest/http_api/user/#change-password + GRAFANA_URL_DEFAULT="http://${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}@${GRAFANA_URL}" + + echo ">> Updating Grafana 'admin' password..." + curl -X PUT -H "Content-Type: application/json" -d '{ + "oldPassword": "'${GRAFANA_PASSWORD}'", + "newPassword": "'${TFS_GRAFANA_PASSWORD}'", + "confirmNew" : "'${TFS_GRAFANA_PASSWORD}'" + }' ${GRAFANA_URL_DEFAULT}/api/user/password + echo + echo + + # Updated Grafana API URL + GRAFANA_URL_UPDATED="http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${GRAFANA_URL}" + echo "export GRAFANA_URL_UPDATED=${GRAFANA_URL_UPDATED}" >> $ENV_VARS_SCRIPT + + echo ">> Installing Scatter Plot plugin..." + curl -X POST -H "Content-Type: application/json" -H "Content-Length: 0" \ + ${GRAFANA_URL_UPDATED}/api/plugins/michaeldmoore-scatter-panel/install + echo + + # Ref: https://grafana.com/docs/grafana/latest/http_api/data_source/ + QDB_HOST_PORT="${METRICSDB_HOSTNAME}:${QDB_SQL_PORT}" + echo ">> Creating datasources..." + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "questdb-mon-kpi", + "url" : "'${QDB_HOST_PORT}'", + "database" : "'${QDB_TABLE_MONITORING_KPIS}'", + "user" : "'${QDB_USERNAME}'", + "basicAuth": false, + "isDefault": true, + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${QDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + echo + + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "questdb-slc-grp", + "url" : "'${QDB_HOST_PORT}'", + "database" : "'${QDB_TABLE_SLICE_GROUPS}'", + "user" : "'${QDB_USERNAME}'", + "basicAuth": false, + "isDefault": false, + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${QDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + printf "\n\n" + + echo ">> Creating dashboards..." + # Ref: https://grafana.com/docs/grafana/latest/http_api/dashboard/ + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_mon_kpis_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_slc_grps_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + printf "\n\n" + + echo ">> Staring dashboards..." + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-l3-monit" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-slice-grps" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + printf "\n\n" +fi diff --git a/src/device/service/DeviceServiceServicerImpl.py b/src/device/service/DeviceServiceServicerImpl.py index b81ac4dc6..27d1addd0 100644 --- a/src/device/service/DeviceServiceServicerImpl.py +++ b/src/device/service/DeviceServiceServicerImpl.py @@ -60,10 +60,8 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): t0 = time.time() device_uuid = request.device_id.device_uuid.uuid - connection_config_rules = check_connect_rules(request.device_config) check_no_endpoints(request.device_endpoints) - t1 = time.time() context_client = ContextClient() @@ -86,7 +84,6 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): device_id = context_client.SetDevice(device) device = get_device(context_client, device_id.device_uuid.uuid, rw_copy=True) - # update device_uuid to honor UUID provided by Context device_uuid = device.device_id.device_uuid.uuid device_name = device.name @@ -97,6 +94,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): self.mutex_queues.wait_my_turn(device_uuid) t3 = time.time() try: + LOGGER.info("ENTRA AQUÍ 1") driver : _Driver = get_driver(self.driver_instance_cache, device) t4 = time.time() @@ -108,7 +106,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): # (which controller is in charge of which sub-device). new_sub_devices : Dict[str, Device] = dict() new_sub_links : Dict[str, Link] = dict() - + LOGGER.info("ENTRA AQUÍ 2") #----- Experimental ------------ new_optical_configs : Dict[str, OpticalConfig] = dict() @@ -123,7 +121,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): t_pop_endpoints = t6 - t5 else: t_pop_endpoints = None - + LOGGER.info("ENTRA AQUÍ 3") is_optical_device = request.device_drivers[0] == DeviceDriverEnum.DEVICEDRIVER_OC if len(device.device_config.config_rules) == len(connection_config_rules) and not is_optical_device: # created from request, populate config rules using driver @@ -141,7 +139,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): raise OperationFailedException('AddDevice', extra_details=errors) t9 = time.time() - + LOGGER.info("ENTRA AQUÍ 4") ztp_service_host = get_env_var_name(ServiceNameEnum.ZTP, ENVVAR_SUFIX_SERVICE_HOST) environment_variables = set(os.environ.keys()) if ztp_service_host in environment_variables: @@ -173,7 +171,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): context_client.SetLink(sub_links) t12 = time.time() - + LOGGER.info("ENTRA AQUÍ 5") # Update endpoint monitoring resources with UUIDs device_with_uuids = get_device( context_client, device_id.device_uuid.uuid, rw_copy=False, include_endpoints=True, diff --git a/src/device/service/OpenConfigServicer.py b/src/device/service/OpenConfigServicer.py index 59c821a67..283298113 100644 --- a/src/device/service/OpenConfigServicer.py +++ b/src/device/service/OpenConfigServicer.py @@ -49,7 +49,6 @@ class OpenConfigServicer(DeviceServiceServicer): def AddOpenConfigDevice(self, request : OpticalConfig, context : grpc.ServicerContext) -> DeviceId: device_uuid = request.device_id.device_uuid.uuid check_no_endpoints(request.device_endpoints) - context_client = ContextClient() device = get_device(context_client, device_uuid, rw_copy=True) if device is None: @@ -61,6 +60,7 @@ class OpenConfigServicer(DeviceServiceServicer): device.device_operational_status = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED device.device_drivers.extend(request.device_drivers) # pylint: disable=no-member device.device_config.CopyFrom(request.device_config) + #LOGGER.debug(request.device_config) device.device_endpoints.extend(request.device_endpoints) # pylint: disable=no-member device_id = context_client.SetDevice(device) diff --git a/src/device/service/drivers/openconfig/OpenConfigDriver.py b/src/device/service/drivers/openconfig/OpenConfigDriver.py index 89432fac2..ea0361fb5 100644 --- a/src/device/service/drivers/openconfig/OpenConfigDriver.py +++ b/src/device/service/drivers/openconfig/OpenConfigDriver.py @@ -307,7 +307,7 @@ class OpenConfigDriver(_Driver): def GetInitialConfig(self) -> List[Tuple[str, Any]]: with self.__lock: return [] - + sap_id = 0 @metered_subclass_method(METRICS_POOL) def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: chk_type('resources', resource_keys, list) diff --git a/src/device/service/drivers/openconfig/templates/EndPoints.py b/src/device/service/drivers/openconfig/templates/EndPoints.py index 26be2e9ca..a404a042b 100644 --- a/src/device/service/drivers/openconfig/templates/EndPoints.py +++ b/src/device/service/drivers/openconfig/templates/EndPoints.py @@ -16,14 +16,14 @@ import logging, lxml.etree as ET from typing import Any, Dict, List, Tuple from common.proto.kpi_sample_types_pb2 import KpiSampleType from .Namespace import NAMESPACES -from .Tools import add_value_from_collection, add_value_from_tag +from .Tools import add_value_from_collection, add_value_from_tag#, get_sap_id LOGGER = logging.getLogger(__name__) XPATH_PORTS = "//ocp:components/ocp:component" XPATH_IFACE_COUNTER = "//oci:interfaces/oci:interface[oci:name='{:s}']/state/counters/{:s}" -def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: +def parse(xml_data : ET.Element, device_sap: int) -> List[Tuple[str, Dict[str, Any]]]: response = [] for xml_component in xml_data.xpath(XPATH_PORTS, namespaces=NAMESPACES): #LOGGER.info('xml_component = {:s}'.format(str(ET.tostring(xml_component)))) @@ -56,4 +56,6 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: if len(endpoint) == 0: continue response.append(('/endpoints/endpoint[{:s}]'.format(endpoint['uuid']), endpoint)) + #sap_id = get_sap_id(endpoint['uuid']) + #response.append(('/device/sap_id', sap_id)) return response diff --git a/src/device/service/drivers/openconfig/templates/Interfaces.py b/src/device/service/drivers/openconfig/templates/Interfaces.py index e8ca15116..3f8930909 100644 --- a/src/device/service/drivers/openconfig/templates/Interfaces.py +++ b/src/device/service/drivers/openconfig/templates/Interfaces.py @@ -26,6 +26,9 @@ XPATH_IPV6ADDRESSES = ".//ociip:ipv6/ociip:addresses/ociip:address" def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: response = [] + sap_interface_counter = 0 + + for xml_interface in xml_data.xpath(XPATH_INTERFACES, namespaces=NAMESPACES): #LOGGER.info('xml_interface = {:s}'.format(str(ET.tostring(xml_interface)))) @@ -43,7 +46,15 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: interface_name = xml_interface.find('oci:name', namespaces=NAMESPACES) if interface_name is None or interface_name.text is None: continue add_value_from_tag(interface, 'name', interface_name) - + + + sap_interface = ET.Element('dummy') #SAP-ID + sap_interface.text = str(sap_interface_counter) + aux = str(sap_interface_counter) + add_value_from_tag(interface, 'sap_id', sap_interface) + sap_interface_counter += 1 + + # Get the type of interface according to the vendor's type if 'ianaift:' in interface_type.text: interface_type.text = interface_type.text.replace('ianaift:', '') #ADVA @@ -57,6 +68,9 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: interface_description = xml_interface.find('oci:config/oci:description', namespaces=NAMESPACES) add_value_from_tag(interface, 'description', interface_description) + + sap_subinterface_counter = 65 # 65 = A in ASCII + for xml_subinterface in xml_interface.xpath(XPATH_SUBINTERFACES, namespaces=NAMESPACES): #LOGGER.info('xml_subinterface = {:s}'.format(str(ET.tostring(xml_subinterface)))) @@ -74,6 +88,13 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: vlan_id = xml_subinterface.find('ocv:vlan/ocv:match/ocv:single-tagged/ocv:config/ocv:vlan-id', namespaces=NAMESPACES) add_value_from_tag(subinterface, 'vlan_id', vlan_id, cast=int) + + sap_subinterface = ET.Element('dummy') #SAP-ID + value = (aux + chr(sap_subinterface_counter)) + sap_subinterface.text = value + add_value_from_tag(subinterface, 'sap_id', sap_subinterface) + sap_subinterface_counter += 1 + # TODO: implement support for multiple IP addresses per subinterface #ipv4_addresses = [] for xml_ipv4_address in xml_subinterface.xpath(XPATH_IPV4ADDRESSES, namespaces=NAMESPACES): diff --git a/src/device/service/drivers/openconfig/templates/Tools.py b/src/device/service/drivers/openconfig/templates/Tools.py index 3adc908b3..fb0a019ab 100644 --- a/src/device/service/drivers/openconfig/templates/Tools.py +++ b/src/device/service/drivers/openconfig/templates/Tools.py @@ -87,4 +87,9 @@ def generate_templates(resource_key: str, resource_value: str, delete: bool,vend if "acl_ruleset" in resource_key: # acl rules management result_templates.extend(acl_mgmt(resource_value,vendor, delete)) - return result_templates \ No newline at end of file + return result_templates + + +#def get_sap_id(target : Dict, endpoint: str, field_value : Collection) -> None: +# if field_value is None or len(field_value) == 0: return +# target[field_name] = field_value \ No newline at end of file diff --git a/src/nbi/service/__main__.py b/src/nbi/service/__main__.py index 71df0517a..5a5bb1afb 100644 --- a/src/nbi/service/__main__.py +++ b/src/nbi/service/__main__.py @@ -27,6 +27,7 @@ from .rest_server.nbi_plugins.ietf_hardware import register_ietf_hardware from .rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn from .rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn from .rest_server.nbi_plugins.ietf_network import register_ietf_network +from .rest_server.nbi_plugins.ietf_sap_topology import register_ietf_sap_topology from .rest_server.nbi_plugins.ietf_network_slice import register_ietf_nss from .rest_server.nbi_plugins.ietf_acl import register_ietf_acl from .rest_server.nbi_plugins.qkd_app import register_qkd_app @@ -75,6 +76,7 @@ def main(): register_ietf_l2vpn(rest_server) # Registering L2VPN entrypoint register_ietf_l3vpn(rest_server) # Registering L3VPN entrypoint register_ietf_network(rest_server) + register_ietf_sap_topology(rest_server) register_ietf_nss(rest_server) # Registering NSS entrypoint register_ietf_acl(rest_server) register_qkd_app(rest_server) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeLink.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeLink.py new file mode 100644 index 000000000..394b916c5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeLink.py @@ -0,0 +1,53 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +from common.proto.context_pb2 import Link +from .bindings.networks.network.link import link +from .NameMapping import NameMappings +from .NetworkTypeEnum import NetworkTypeEnum + +def compose_link( + ietf_link_obj : link, link_specs : Link, name_mappings : NameMappings, network_type : NetworkTypeEnum +) -> None: + src_endpoint_id = link_specs.link_endpoint_ids[0] + ietf_link_obj.source.source_node = name_mappings.get_device_name(src_endpoint_id.device_id) + ietf_link_obj.source.source_tp = name_mappings.get_endpoint_name(src_endpoint_id) + + dst_endpoint_id = link_specs.link_endpoint_ids[-1] + ietf_link_obj.destination.dest_node = name_mappings.get_device_name(dst_endpoint_id.device_id) + ietf_link_obj.destination.dest_tp = name_mappings.get_endpoint_name(dst_endpoint_id) + + ietf_link_obj.te._set_oper_status('up') + + te_link_attrs = ietf_link_obj.te.te_link_attributes + te_link_attrs.access_type = 'point-to-point' + te_link_attrs.admin_status = 'up' + te_link_attrs.name = link_specs.name + + if network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + link_total_cap_kbps = link_specs.attributes.total_capacity_gbps * 1e6 + link_used_cap_kbps = link_specs.attributes.used_capacity_gbps * 1e6 + link_avail_cap_kbps = link_total_cap_kbps - link_used_cap_kbps + + te_link_attrs.max_link_bandwidth.te_bandwidth.eth_bandwidth = link_total_cap_kbps + unresv_bw = te_link_attrs.unreserved_bandwidth.add(7) + unresv_bw.te_bandwidth.eth_bandwidth = link_avail_cap_kbps + elif network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY: + te_link_attrs.te_delay_metric = 1 + oduitem = te_link_attrs.max_link_bandwidth.te_bandwidth.otn.odulist.add('ietf-layer1-types:ODU0') + oduitem.ts_number = 80 + + unresv_bw = te_link_attrs.unreserved_bandwidth.add(7) + oduitem = unresv_bw.te_bandwidth.otn.odulist.add('ietf-layer1-types:ODU0') + oduitem.ts_number = 80 diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNetwork.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNetwork.py new file mode 100644 index 000000000..ef9e7f31e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNetwork.py @@ -0,0 +1,115 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging, re +from common.DeviceTypes import DeviceTypeEnum +from common.proto.context_pb2 import TopologyDetails +from .bindings.networks.network import network +from .ComposeLink import compose_link +from .ComposeNode import compose_node +from .NameMapping import NameMappings +from .NetworkTypeEnum import NetworkTypeEnum, get_network_topology_type + +LOGGER = logging.getLogger(__name__) + +IGNORE_DEVICE_TYPES = { + DeviceTypeEnum.CLIENT.value, + DeviceTypeEnum.DATACENTER.value, + DeviceTypeEnum.EMULATED_CLIENT.value, + DeviceTypeEnum.EMULATED_DATACENTER.value, + DeviceTypeEnum.EMULATED_IP_SDN_CONTROLLER, + DeviceTypeEnum.EMULATED_MICROWAVE_RADIO_SYSTEM.value, + DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM.value, + DeviceTypeEnum.EMULATED_XR_CONSTELLATION.value, + DeviceTypeEnum.IP_SDN_CONTROLLER, + DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM.value, + DeviceTypeEnum.NETWORK.value, + DeviceTypeEnum.OPEN_LINE_SYSTEM.value, + DeviceTypeEnum.XR_CONSTELLATION.value, +} + +IGNORE_DEVICE_NAMES = { + NetworkTypeEnum.TE_OTN_TOPOLOGY: { + 'nce-t', '128.32.10.1', '128.32.33.5', '128.32.20.5', '128.32.20.1', '128.32.10.5', + }, + NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: { + 'nce-t', + }, +} + +TE_TOPOLOGY_NAME = 'Huawei-Network' + +def compose_network(ietf_network_obj : network, te_topology_name : str, topology_details : TopologyDetails) -> None: + ietf_network_obj.te.name = TE_TOPOLOGY_NAME + + #te_topology_name = topology_details.name + match = re.match(r'providerId\-([^\-]*)-clientId-([^\-]*)-topologyId-([^\-]*)', te_topology_name) + if match is not None: + provider_id, client_id, topology_id = match.groups() + ietf_network_obj.te_topology_identifier.provider_id = int(provider_id) + ietf_network_obj.te_topology_identifier.client_id = int(client_id) + ietf_network_obj.te_topology_identifier.topology_id = str(topology_id) + else: + ietf_network_obj.te_topology_identifier.provider_id = 10 + ietf_network_obj.te_topology_identifier.client_id = 0 + ietf_network_obj.te_topology_identifier.topology_id = '0' + + ietf_network_obj.network_types.te_topology._set_present() + # TODO: resolve setting of otn_topology/eth_tran_topology network type; not working in bindings. + # See "../ManualFixes.py". + topology_id = ietf_network_obj.te_topology_identifier.topology_id + topology_id = { + '1': NetworkTypeEnum.TE_OTN_TOPOLOGY.value, + '2': NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY.value, + }.get(topology_id, topology_id) + network_type = get_network_topology_type(topology_id) + if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY: + #ietf_network_obj.network_types.te_topology.otn_topology._set_present() + pass + elif network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + #ietf_network_obj.network_types.te_topology.eth_tran_topology._set_present() + pass + else: + raise Exception('Unsupported TopologyId({:s})'.format(str(topology_id))) + + name_mappings = NameMappings() + + ignore_device_uuids = set() + + for device in topology_details.devices: + device_uuid = device.device_id.device_uuid.uuid + + device_type = device.device_type + if device_type in IGNORE_DEVICE_TYPES: + ignore_device_uuids.add(device_uuid) + continue + + device_name = device.name + if device_name in IGNORE_DEVICE_NAMES.get(network_type, set()): + ignore_device_uuids.add(device_uuid) + continue + + ietf_node_obj = ietf_network_obj.node.add(device_name) + compose_node(ietf_node_obj, device, name_mappings, network_type) + + for link in topology_details.links: + link_device_uuids = { + endpoint_id.device_id.device_uuid.uuid + for endpoint_id in link.link_endpoint_ids + } + if len(ignore_device_uuids.intersection(link_device_uuids)) > 0: + continue + link_name = link.name + ietf_link_obj = ietf_network_obj.link.add(link_name) + compose_link(ietf_link_obj, link, name_mappings, network_type) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNode.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNode.py new file mode 100644 index 000000000..24da280e6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeNode.py @@ -0,0 +1,107 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +from common.proto.context_pb2 import Device +from .bindings.networks.network.node import node +from .ComposeTermPoint import compose_term_point +from .NameMapping import NameMappings +from .NetworkTypeEnum import NetworkTypeEnum + +LOGGER = logging.getLogger(__name__) + +MAPPINGS_TE_NODE_NAME = { + '10.0.10.1' : 'OA', + '10.0.20.1' : 'P', + '10.0.30.1' : 'OE', + '10.0.40.1' : 'P', + + '128.32.10.1': 'ONT1', + '128.32.20.1': 'ONT2', + '128.32.33.5': 'OLT', +} + +IGNORE_ENDPOINT_NAMES = {'mgmt', 'eth1'} + +def compose_node( + ietf_node_obj : node, device : Device, name_mappings : NameMappings, network_type : NetworkTypeEnum +) -> None: + device_name = device.name + + name_mappings.store_device_name(device) + + ietf_node_obj.te_node_id = device_name + + ietf_node_obj.te._set_oper_status('up') + ietf_node_obj.te.te_node_attributes.admin_status = 'up' + ietf_node_obj.te.te_node_attributes.name = MAPPINGS_TE_NODE_NAME.get(device_name, device_name) + + for endpoint in device.device_endpoints: + endpoint_name = endpoint.name + if endpoint_name in IGNORE_ENDPOINT_NAMES: continue + if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY and endpoint.endpoint_type != 'optical': continue + + ietf_tp_obj = ietf_node_obj.termination_point.add(endpoint_name) + compose_term_point(ietf_tp_obj, device, endpoint, name_mappings, network_type) + + if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY: + if device_name in {'10.0.30.1', '10.0.40.1'}: + ntaw = ietf_node_obj.te.tunnel_termination_point.add('NTAw') + ntaw.admin_status = 'up' + ntaw.encoding = 'ietf-te-types:lsp-encoding-oduk' + ntaw_llc = ntaw.local_link_connectivities.local_link_connectivity.add('500') + ntaw_llc.is_allowed = True + ntaw.name = '1-1-1-1-1' + ntaw._set_oper_status('up') + ntaw.protection_type = 'ietf-te-types:lsp-protection-unprotected' + ntaw.switching_capability = 'ietf-te-types:switching-otn' + + ntax = ietf_node_obj.te.tunnel_termination_point.add('NTAx') + ntax.admin_status = 'up' + ntax.encoding = 'ietf-te-types:lsp-encoding-oduk' + ntax_llc = ntax.local_link_connectivities.local_link_connectivity.add('501') + ntax_llc.is_allowed = True + ntax.name = '1-1-1-1-1' + ntax._set_oper_status('up') + ntax.protection_type = 'ietf-te-types:lsp-protection-unprotected' + ntax.switching_capability = 'ietf-te-types:switching-otn' + elif device_name in {'10.0.10.1', '10.0.20.1'}: + ntax = ietf_node_obj.te.tunnel_termination_point.add('NTAx') + ntax.admin_status = 'up' + ntax.encoding = 'ietf-te-types:lsp-encoding-oduk' + ntax_llc = ntax.local_link_connectivities.local_link_connectivity.add('501') + ntax_llc.is_allowed = True + ntax.name = '1-1-1-1-1' + ntax._set_oper_status('up') + ntax.protection_type = 'ietf-te-types:lsp-protection-unprotected' + ntax.switching_capability = 'ietf-te-types:switching-otn' + + ntaw = ietf_node_obj.te.tunnel_termination_point.add('NTAw') + ntaw.admin_status = 'up' + ntaw.encoding = 'ietf-te-types:lsp-encoding-oduk' + ntaw_llc = ntaw.local_link_connectivities.local_link_connectivity.add('500') + ntaw_llc.is_allowed = True + ntaw.name = '1-1-1-1-1' + ntaw._set_oper_status('up') + ntaw.protection_type = 'ietf-te-types:lsp-protection-unprotected' + ntaw.switching_capability = 'ietf-te-types:switching-otn' + elif network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + if device_name in {'128.32.33.5'}: + connectivity_matrices = ietf_node_obj.te.te_node_attributes.connectivity_matrices + lr0 = connectivity_matrices.label_restrictions.label_restriction.add(0) + lr0.label_start.te_label.vlanid = 21 + lr0.label_end.te_label.vlanid = 21 + lr1 = connectivity_matrices.label_restrictions.label_restriction.add(1) + lr1.label_start.te_label.vlanid = 31 + lr1.label_end.te_label.vlanid = 31 diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeTermPoint.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeTermPoint.py new file mode 100644 index 000000000..9922e0470 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ComposeTermPoint.py @@ -0,0 +1,102 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +from common.proto.context_pb2 import Device, EndPoint +from .bindings.networks.network.node.termination_point import termination_point +from .NameMapping import NameMappings +from .NetworkTypeEnum import NetworkTypeEnum + +MAPPINGS_TE_NAME = { + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.10.1', '200'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.10.1', '500'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.10.1', '501'): '1-1-1-1-1', + + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.20.1', '500'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.20.1', '501'): '1-1-1-1-1', + + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.30.1', '200'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.30.1', '500'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.30.1', '501'): '1-1-1-1-1', + + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.40.1', '500'): '1-1-1-1-1', + (NetworkTypeEnum.TE_OTN_TOPOLOGY, '10.0.40.1', '501'): '1-1-1-1-1', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.10.1', '200'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.10.1', '500'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.10.1', '501'): 'endpoint:111', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.20.1', '500'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.20.1', '501'): 'endpoint:111', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.30.1', '200'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.30.1', '500'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.30.1', '501'): 'endpoint:111', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.40.1', '500'): 'endpoint:111', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.40.1', '501'): 'endpoint:111', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '128.32.33.5', '500') : 'endpoint:111', +} + +MAPPINGS_TE_TP_ID = { + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.10.1', '200'): '128.32.33.254', + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '10.0.30.1', '200'): '172.10.33.254', + + (NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY, '128.32.33.5', '500') : '128.32.33.2', +} + +LOGGER = logging.getLogger(__name__) + +def compose_term_point( + ietf_tp_obj : termination_point, device : Device, endpoint : EndPoint, name_mappings : NameMappings, + network_type : NetworkTypeEnum +) -> None: + name_mappings.store_endpoint_name(device, endpoint) + + device_name = device.name + endpoint_name = endpoint.name + + ietf_tp_obj.te_tp_id = MAPPINGS_TE_TP_ID.get((network_type, device_name, endpoint_name), endpoint_name) + + if (network_type, device_name, endpoint_name) in MAPPINGS_TE_NAME: + ietf_tp_obj.te._set_oper_status('up') + ietf_tp_obj.te.admin_status = 'up' + ietf_tp_obj.te.name = MAPPINGS_TE_NAME.get((network_type, device_name, endpoint_name), endpoint_name) + + if network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + if (network_type, device_name, endpoint_name) in MAPPINGS_TE_NAME: + ietf_if_sw_cap = ietf_tp_obj.te.interface_switching_capability.add( + 'ietf-te-types:switching-l2sc ietf-te-types:lsp-encoding-ethernet' + ) + ietf_max_lsp_bw = ietf_if_sw_cap.max_lsp_bandwidth.add('7') + ietf_max_lsp_bw.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps + + #ietf_tp_obj.eth_svc.client_facing = True + + ietf_tp_obj.eth_svc.supported_classification.port_classification = True + outer_tag = ietf_tp_obj.eth_svc.supported_classification.vlan_classification.outer_tag + outer_tag.supported_tag_types.append('ietf-eth-tran-types:classify-c-vlan') + outer_tag.supported_tag_types.append('ietf-eth-tran-types:classify-s-vlan') + outer_tag.vlan_bundling = False + outer_tag.vlan_range = '1-4094' + + elif network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY: + #ietf_tp_obj.te.client_svc.client_facing = False + + ietf_if_sw_cap = ietf_tp_obj.te.interface_switching_capability.add( + 'ietf-te-types:switching-otn ietf-te-types:lsp-encoding-oduk' + ) + ietf_max_lsp_bw = ietf_if_sw_cap.max_lsp_bandwidth.add('7') + ietf_max_lsp_bw.te_bandwidth.otn.odu_type = 'ietf-layer1-types:ODU4' diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ManualFixes.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ManualFixes.py new file mode 100644 index 000000000..803d2bd09 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/ManualFixes.py @@ -0,0 +1,73 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +from typing import Dict + +from .NetworkTypeEnum import NetworkTypeEnum + +def manual_fixes(json_response : Dict) -> None: + # TODO: workaround to set network types manually. Currently does not work; refine bindings. + # Seems limitation of pyangbind using multiple augmentations and nested empty containers. + for json_network in json_response['ietf-network:networks']['network']: + net_te_topo_id = json_network.get('ietf-te-topology:te-topology-identifier', {}).get('topology-id') + if net_te_topo_id is None: continue + net_te_topo_type = json_network['network-types']['ietf-te-topology:te-topology'] + if net_te_topo_id == '1': + network_type = NetworkTypeEnum.TE_OTN_TOPOLOGY + net_te_topo_type['ietf-otn-topology:otn-topology'] = {} + elif net_te_topo_id == '2': + network_type = NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY + net_te_topo_type['ietf-eth-te-topology:eth-tran-topology'] = {} + else: + network_type = None + + for json_node in json_network.get('node', []): + for json_tp in json_node.get('ietf-network-topology:termination-point', []): + json_tp_te = json_tp.get('ietf-te-topology:te', {}) + + if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY: + json_tp_te_cs = json_tp_te.setdefault('ietf-otn-topology:client-svc', {}) + json_tp_te_cs['client-facing'] = False + elif network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + if 'ietf-eth-te-topology:eth-svc' in json_tp: + client_facing = json_tp['tp-id'] in {'200', '201'} + json_tp['ietf-eth-te-topology:eth-svc']['client-facing'] = client_facing + + # Fix value type of bandwidth + for json_if_sw_cap in json_tp_te.get('interface-switching-capability', []): + for json_max_lsp_bandwidth in json_if_sw_cap.get('max-lsp-bandwidth', []): + json_te_bw = json_max_lsp_bandwidth.get('te-bandwidth', {}) + if network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + if 'ietf-eth-te-topology:eth-bandwidth' in json_te_bw: + eth_bw = json_te_bw['ietf-eth-te-topology:eth-bandwidth'] + if isinstance(eth_bw, str): + json_te_bw['ietf-eth-te-topology:eth-bandwidth'] = int(eth_bw) + + for json_link in json_network.get('ietf-network-topology:link', []): + json_link_te_attributes = json_link.get('ietf-te-topology:te', {}).get('te-link-attributes', {}) + + # Fix value type of bandwidth + json_te_bw = json_link_te_attributes.get('max-link-bandwidth', {}).get('te-bandwidth', {}) + if network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: + if 'ietf-eth-te-topology:eth-bandwidth' in json_te_bw: + eth_bw = json_te_bw['ietf-eth-te-topology:eth-bandwidth'] + if isinstance(eth_bw, str): + json_te_bw['ietf-eth-te-topology:eth-bandwidth'] = int(eth_bw) + + for json_unresv_bandwidth in json_link_te_attributes.get('unreserved-bandwidth', []): + json_te_bw = json_unresv_bandwidth.get('te-bandwidth', {}) + if 'ietf-eth-te-topology:eth-bandwidth' in json_te_bw: + eth_bw = json_te_bw['ietf-eth-te-topology:eth-bandwidth'] + if isinstance(eth_bw, str): + json_te_bw['ietf-eth-te-topology:eth-bandwidth'] = int(eth_bw) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NameMapping.py new file mode 100644 index 000000000..03d052afd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NameMapping.py @@ -0,0 +1,46 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +from typing import Dict, Tuple +from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId + +class NameMappings: + def __init__(self) -> None: + self._device_uuid_to_name : Dict[str, str] = dict() + self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict() + + def store_device_name(self, device : Device) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + self._device_uuid_to_name[device_uuid] = device_name + self._device_uuid_to_name[device_name] = device_name + + def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid + endpoint_name = endpoint.name + self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name + + def get_device_name(self, device_id : DeviceId) -> str: + device_uuid = device_id.device_uuid.uuid + return self._device_uuid_to_name.get(device_uuid, device_uuid) + + def get_endpoint_name(self, endpoint_id : EndPointId) -> str: + device_uuid = endpoint_id.device_id.device_uuid.uuid + endpoint_uuid = endpoint_id.endpoint_uuid.uuid + return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NetworkTypeEnum.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NetworkTypeEnum.py new file mode 100644 index 000000000..849252b99 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/NetworkTypeEnum.py @@ -0,0 +1,23 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +from enum import Enum +from typing import Optional + +class NetworkTypeEnum(Enum): + TE_OTN_TOPOLOGY = 'otn' + TE_ETH_TRAN_TOPOLOGY = 'eth-tran' + +def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]: + return NetworkTypeEnum._value2member_map_.get(topology_id) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/Networks.py new file mode 100644 index 000000000..e2ac05307 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/Networks.py @@ -0,0 +1,112 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import enum, json, logging +import pyangbind.lib.pybindJSON as pybindJSON +from flask import request +from flask.json import jsonify +from flask_restful import Resource +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import get_setting +from common.proto.context_pb2 import ContextId, Empty +from common.tools.context_queries.Topology import get_topology_details +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH +from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR +from .bindings import ietf_network +from .ComposeNetwork import compose_network +from .ManualFixes import manual_fixes +from .YangHandler import YangHandler + +LOGGER = logging.getLogger(__name__) + +TE_TOPOLOGY_NAMES = [ + 'providerId-10-clientId-0-topologyId-1', + 'providerId-10-clientId-0-topologyId-2' +] + +class Renderer(enum.Enum): + LIBYANG = 'LIBYANG' + PYANGBIND = 'PYANGBIND' + +DEFAULT_RENDERER = Renderer.LIBYANG +USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) + + +class Networks(Resource): + @HTTP_AUTH.login_required + def get(self): + LOGGER.info('Request: {:s}'.format(str(request))) + topology_id = '' + try: + context_client = ContextClient() + + if USE_RENDERER == Renderer.PYANGBIND.value: + #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True) + #if target is None: + # raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) + + ietf_nets = ietf_network() + + topology_details = get_topology_details( + context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, + #rw_copy=True + ) + if topology_details is None: + MSG = 'Topology({:s}/{:s}) not found' + raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) + + for te_topology_name in TE_TOPOLOGY_NAMES: + ietf_net = ietf_nets.networks.network.add(te_topology_name) + compose_network(ietf_net, te_topology_name, topology_details) + + # TODO: improve these workarounds to enhance performance + json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf')) + + # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology + manual_fixes(json_response) + elif USE_RENDERER == Renderer.LIBYANG.value: + yang_handler = YangHandler() + json_response = [] + + contexts = context_client.ListContexts(Empty()).contexts + context_names = [context.name for context in contexts] + LOGGER.info(f'Contexts detected: {context_names}') + + for context_name in context_names: + topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies + topology_names = [topology.name for topology in topologies] + LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') + + for topology_name in topology_names: + topology_details = get_topology_details(context_client, topology_name, context_name) + if topology_details is None: + raise Exception(f'Topology({context_name}/{topology_name}) not found') + + network_reply = yang_handler.compose_network(topology_name, topology_details) + json_response.append(network_reply) + + yang_handler.destroy() + else: + raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) + + response = jsonify(json_response) + response.status_code = HTTP_OK + + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) + response = jsonify({'error': str(e)}) + response.status_code = HTTP_SERVERERROR + return response diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/README.md b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/README.md new file mode 100644 index 000000000..8d808a45b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/README.md @@ -0,0 +1,14 @@ +# IETF Network + +This NBI plugin implements a basic skeleton for the IETF Network data model. + +## DISCLAIMER +__USE WITH CARE! This plugin is NOT production ready, it contains many hardcodings based on ongoing tests.__ + +## IETF RFCs/drafts: +- RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies (https://datatracker.ietf.org/doc/html/rfc8795) +- RFC 8776 - Common YANG Data Types for Traffic Engineering (https://datatracker.ietf.org/doc/html/rfc8776) +- RFC 8345 - A YANG Data Model for Network Topologies (https://datatracker.ietf.org/doc/html/rfc8345) +- RFC 6991 - Common YANG Data Types (https://datatracker.ietf.org/doc/html/rfc6991) +- RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology (https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/) +- RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals (https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/SAP_Topology.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/SAP_Topology.py new file mode 100644 index 000000000..ef38a6710 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/SAP_Topology.py @@ -0,0 +1,112 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import enum, json, logging +import pyangbind.lib.pybindJSON as pybindJSON +from flask import request +from flask.json import jsonify +from flask_restful import Resource +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import get_setting +from common.proto.context_pb2 import ContextId, Empty +from common.tools.context_queries.Topology import get_topology_details +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH +from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR +from .bindings import ietf_network +from .ComposeNetwork import compose_network +from .ManualFixes import manual_fixes +from .YangHandler import YangHandler + +LOGGER = logging.getLogger(__name__) + +TE_TOPOLOGY_NAMES = [ + 'providerId-10-clientId-0-topologyId-1', + 'providerId-10-clientId-0-topologyId-2' +] + +class Renderer(enum.Enum): + LIBYANG = 'LIBYANG' + PYANGBIND = 'PYANGBIND' + +DEFAULT_RENDERER = Renderer.LIBYANG +USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) + + +class SAP_Topology(Resource): + @HTTP_AUTH.login_required + def get(self): + LOGGER.info('Request: {:s}'.format(str(request))) + topology_id = '' + try: + context_client = ContextClient() + + if USE_RENDERER == Renderer.PYANGBIND.value: + #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True) + #if target is None: + # raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) + + ietf_nets = ietf_network() + + topology_details = get_topology_details( + context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, + #rw_copy=True + ) + if topology_details is None: + MSG = 'Topology({:s}/{:s}) not found' + raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) + + for te_topology_name in TE_TOPOLOGY_NAMES: + ietf_net = ietf_nets.networks.network.add(te_topology_name) + compose_network(ietf_net, te_topology_name, topology_details) + + # TODO: improve these workarounds to enhance performance + json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf')) + + # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology + manual_fixes(json_response) + elif USE_RENDERER == Renderer.LIBYANG.value: + yang_handler = YangHandler() + json_response = [] + + contexts = context_client.ListContexts(Empty()).contexts + context_names = [context.name for context in contexts] + LOGGER.info(f'Contexts detected: {context_names}') + + for context_name in context_names: + topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies + topology_names = [topology.name for topology in topologies] + LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') + + for topology_name in topology_names: + topology_details = get_topology_details(context_client, topology_name, context_name) + if topology_details is None: + raise Exception(f'Topology({context_name}/{topology_name}) not found') + + network_reply = yang_handler.compose_network(topology_name, topology_details) + json_response.append(network_reply) + + yang_handler.destroy() + else: + raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) + + response = jsonify(json_response) + response.status_code = HTTP_OK + + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) + response = jsonify({'error': str(e)}) + response.status_code = HTTP_SERVERERROR + return response diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py new file mode 100644 index 000000000..67ebf20e4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py @@ -0,0 +1,155 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import json +import libyang, logging, os +from typing import Any +from common.proto.context_pb2 import TopologyDetails, Device, Link +from .NameMapping import NameMappings +from context.client.ContextClient import ContextClient +from common.tools.object_factory.Device import json_device_id +from common.proto.context_pb2 import DeviceId + +LOGGER = logging.getLogger(__name__) + +YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') +YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology', 'ietf-sap-ntw', 'ietf-vpn-common'] + +class YangHandler: + def __init__(self) -> None: + self._yang_context = libyang.Context(YANG_DIR) + for yang_module_name in YANG_MODULES: + LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) + self._yang_context.load_module(yang_module_name).feature_enable_all() + + + + def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict: + networks = self._yang_context.create_data_path('/ietf-network:networks') + + + network = networks.create_path(f'network[network-id="{te_topology_name}"]') + network.create_path('network-id', te_topology_name) + + network_types = network.create_path('network-types') + sap_network = network_types.create_path('ietf-sap-ntw:sap-network') + + + available_services = ["ietf-vpn-common:l3vpn"] #no se muy bien como coger todos los servicios disponibles + + for service in available_services: + sap_network.create_path('service-type', service) #no se muy bien como coger todos los servicios disponibles + + connected_tps = set() # Conjunto local para TPs conectados + name_mappings = NameMappings() + + # Depuración inicial + LOGGER.info(f"Procesando topology_details: {len(topology_details.devices)} devices, {len(topology_details.links)} links.") + + + + if topology_details.links: + for link in topology_details.links: + source_name = name_mappings.get_endpoint_name(link.link_endpoint_ids[0]) + dest_name = name_mappings.get_endpoint_name(link.link_endpoint_ids[-1]) + connected_tps.add(source_name) + connected_tps.add(dest_name) + + + if topology_details.devices: + for device in topology_details.devices: + self.compose_node(device, name_mappings, network, connected_tps) + + + + + return json.loads(networks.print_mem('json')) + + + + def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any, connected_tps: set) -> None: + + device_name = dev.name + name_mappings.store_device_name(dev) + + node = network.create_path(f'node[node-id="{device_name}"]') + node.create_path('node-id', device_name) + + + + context_client = ContextClient() + device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) + + for endpoint in device.device_endpoints: + name_mappings.store_endpoint_name(dev, endpoint) + #LOGGER.info(f"Métodos disponibles en 'endpoint': {dir(endpoint)}") + + + + self._process_device_config(device, node, connected_tps) + + + + + def _process_device_config(self, device: Device, node: Any, connected_tps: set) -> None: + #sLOGGER.info(f"Métodos disponibles en 'node': {dir(node)}") + #LOGGER.info(f"Métodos disponibles en 'nedevice': {dir(device)}") + for config in device.device_config.config_rules: + if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key: + continue + + for endpoint in device.device_endpoints: + endpoint_name = endpoint.name + if endpoint.endpoint_id.endpoint_uuid.uuid in connected_tps: + continue + if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key: + interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0] + self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value) + + + + def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None: + ip_addresses = self._extract_ip_addresses(json.loads(resource_value)) + if ip_addresses: + #tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]') + service = node.create_path(f'ietf-sap-ntw:service[service-type="ietf-vpn-common:l3vpn"]') + + sap = service.create_path(f'sap[sap-id="{endpoint_name}"]') + #sap.create_path('peer-sap-id', interface_name) + sap.create_path('peer-sap-id', "NOT IMPLEMENTED") + + sap_status = sap.create_path('sap-status') + sap_status.create_path('status', "ietf-vpn-common:op-up") #NOT IMPLEMENTED + + service_status = sap.create_path('service-status') + admin_status = service_status.create_path('admin-status') + oper_status = service_status.create_path('oper-status') + admin_status.create_path('status', "ietf-vpn-common:admin-up") #NOT IMPLEMENTED + oper_status.create_path('status', "ietf-vpn-common:op-up") #NOT IMPLEMENTED + + + + @staticmethod + + def _extract_ip_addresses(resource_value: dict) -> list: + ip_addresses = [] + if 'address_ip' in resource_value: + ip_addresses.append(resource_value['address_ip']) + if 'address_ipv6' in resource_value: + ip_addresses.append(resource_value['address_ipv6']) + return ip_addresses + + + def destroy(self) -> None: + self._yang_context.destroy() diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/__init__.py new file mode 100644 index 000000000..573779610 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/__init__.py @@ -0,0 +1,44 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8795 + +# RFC 8776 - Common YANG Data Types for Traffic Engineering +# Ref: https://datatracker.ietf.org/doc/html/rfc8776 + +# RFC 8345 - A YANG Data Model for Network Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8345 + +# RFC 6991 - Common YANG Data Types +# Ref: https://datatracker.ietf.org/doc/html/rfc6991 + +# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/ + +# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/ + +from flask_restful import Resource +from nbi.service.rest_server.RestServer import RestServer +from .SAP_Topology import SAP_Topology + +URL_PREFIX = '/restconf/data/ietf-network:networks' + +def _add_resource(rest_server : RestServer, resource : Resource, *urls, **kwargs): + urls = [(URL_PREFIX + url) for url in urls] + rest_server.add_resource(resource, *urls, **kwargs) + +def register_ietf_sap_topology(rest_server : RestServer): + _add_resource(rest_server, SAP_Topology, '/sap') diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/_docs/test_commands.txt b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/_docs/test_commands.txt new file mode 100644 index 000000000..78b2dd246 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/_docs/test_commands.txt @@ -0,0 +1,26 @@ +cd ~/tfs-ctrl/src/nbi/service/rest_server/nbi_plugins/ietf_network + +python + +from bindings import ietf_network +import pyangbind.lib.pybindJSON as pybindJSON + +ietf_nets_obj = ietf_network() +ietf_net_obj = ietf_nets_obj.networks.network.add('my-topo') + +ietf_node_obj = ietf_net_obj.node.add('my-node') +ietf_tp_obj = ietf_node_obj.termination_point.add('my-tp') + +ietf_link_obj = ietf_net_obj.link.add('my-link') + +ietf_link_obj.te._set_oper_status('up') +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + +ietf_link_obj.te.te_link_attributes.admin_status = 'down' +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + + +ietf_link_obj.te.te_link_attributes.max_link_bandwidth.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +unresv_bw = ietf_link_obj.te.te_link_attributes.unreserved_bandwidth.add(7) +unresv_bw.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +print(pybindJSON.dumps(ietf_link_obj, mode='ietf')) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/__init__.py new file mode 100644 index 000000000..6df50e1a6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ietf_network_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network-topology - based on the path /ietf-network-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines a common base model for a network topology, +augmenting the base network data model with links to connect +nodes, as well as termination points to terminate links +on nodes. + +Copyright (c) 2018 IETF Trust and the persons identified as +authors of the code. All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, is permitted pursuant to, and subject +to the license terms contained in, the Simplified BSD License +set forth in Section 4.c of the IETF Trust's Legal Provisions +Relating to IETF Documents +(https://trustee.ietf.org/license-info). + +This version of this YANG module is part of RFC 8345; +see the RFC itself for full legal notices. + """ + _pyangbind_elements = {} + + + +from . import networks +class ietf_network(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /ietf-network. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines a common base data model for a collection +of nodes in a network. Node definitions are further used +in network topologies and inventories. + +Copyright (c) 2018 IETF Trust and the persons identified as +authors of the code. All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, is permitted pursuant to, and subject +to the license terms contained in, the Simplified BSD License +set forth in Section 4.c of the IETF Trust's Legal Provisions +Relating to IETF Documents +(https://trustee.ietf.org/license-info). + +This version of this YANG module is part of RFC 8345; +see the RFC itself for full legal notices. + """ + __slots__ = ('_path_helper', '_extmethods', '__networks',) + + _yang_name = 'ietf-network' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__networks = YANGDynClass(base=networks.networks, is_container='container', yang_name="networks", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_networks(self): + """ + Getter method for networks, mapped from YANG variable /networks (container) + + YANG Description: Serves as a top-level container for a list of networks. + """ + return self.__networks + + def _set_networks(self, v, load=False): + """ + Setter method for networks, mapped from YANG variable /networks (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_networks is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_networks() directly. + + YANG Description: Serves as a top-level container for a list of networks. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=networks.networks, is_container='container', yang_name="networks", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """networks must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=networks.networks, is_container='container', yang_name="networks", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True)""", + }) + + self.__networks = t + if hasattr(self, '_set'): + self._set() + + def _unset_networks(self): + self.__networks = YANGDynClass(base=networks.networks, is_container='container', yang_name="networks", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + + networks = __builtin__.property(_get_networks, _set_networks) + + + _pyangbind_elements = OrderedDict([('networks', networks), ]) + + +class ietf_te_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-te-topology - based on the path /ietf-te-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This YANG module defines a TE topology model for representing, +retrieving, and manipulating technology-agnostic TE topologies. + +Copyright (c) 2020 IETF Trust and the persons identified as +authors of the code. All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, is permitted pursuant to, and subject to +the license terms contained in, the Simplified BSD License set +forth in Section 4.c of the IETF Trust's Legal Provisions +Relating to IETF Documents +(https://trustee.ietf.org/license-info). + +This version of this YANG module is part of RFC 8795; see the +RFC itself for full legal notices. + """ + _pyangbind_elements = {} + + + +class ietf_otn_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-otn-topology - based on the path /ietf-otn-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines a protocol independent Layer 1/ODU topology +data model. The model fully conforms +to the Network Management Datastore Architecture (NMDA). + +Copyright (c) 2023 IETF Trust and the persons identified +as authors of the code. All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, is permitted pursuant to, and subject +to the license terms contained in, the Revised BSD License +set forth in Section 4.c of the IETF Trust's Legal Provisions +Relating to IETF Documents +(https://trustee.ietf.org/license-info). + +This version of this YANG module is part of RFC XXXX; see +the RFC itself for full legal notices. + +The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL +NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', +'MAY', and 'OPTIONAL' in this document are to be interpreted as +described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, +they appear in all capitals, as shown here. + """ + _pyangbind_elements = {} + + + +class ietf_eth_te_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-eth-te-topology - based on the path /ietf-eth-te-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines a YANG data model for describing +layer-2 Ethernet transport topologies. The model fully +conforms to the Network Management Datastore +Architecture (NMDA). + +Copyright (c) 2023 IETF Trust and the persons identified +as authors of the code. All rights reserved. + +Redistribution and use in source and binary forms, with or +without modification, is permitted pursuant to, and subject +to the license terms contained in, the Revised BSD License +set forth in Section 4.c of the IETF Trust's Legal Provisions +Relating to IETF Documents +(https://trustee.ietf.org/license-info). + +This version of this YANG module is part of RFC XXXX; see +the RFC itself for full legal notices. + +The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL +NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', +'MAY', and 'OPTIONAL' in this document are to be interpreted as +described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, +they appear in all capitals, as shown here. + """ + _pyangbind_elements = {} + + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/__init__.py new file mode 100644 index 000000000..0c52044eb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import network +from . import te +class networks(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Serves as a top-level container for a list of networks. + """ + __slots__ = ('_path_helper', '_extmethods', '__network','__te',) + + _yang_name = 'networks' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network = YANGDynClass(base=YANGListType("network_id",network.network, yang_name="network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-id', extensions=None), is_container='list', yang_name="network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks'] + + def _get_network(self): + """ + Getter method for network, mapped from YANG variable /networks/network (list) + + YANG Description: Describes a network. +A network typically contains an inventory of nodes, +topological information (augmented through the +network-topology data model), and layering information. + """ + return self.__network + + def _set_network(self, v, load=False): + """ + Setter method for network, mapped from YANG variable /networks/network (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_network is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network() directly. + + YANG Description: Describes a network. +A network typically contains an inventory of nodes, +topological information (augmented through the +network-topology data model), and layering information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("network_id",network.network, yang_name="network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-id', extensions=None), is_container='list', yang_name="network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("network_id",network.network, yang_name="network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-id', extensions=None), is_container='list', yang_name="network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True)""", + }) + + self.__network = t + if hasattr(self, '_set'): + self._set() + + def _unset_network(self): + self.__network = YANGDynClass(base=YANGListType("network_id",network.network, yang_name="network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-id', extensions=None), is_container='list', yang_name="network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + + + def _get_te(self): + """ + Getter method for te, mapped from YANG variable /networks/te (container) + + YANG Description: Indicates TE support. + """ + return self.__te + + def _set_te(self, v, load=False): + """ + Setter method for te, mapped from YANG variable /networks/te (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te() directly. + + YANG Description: Indicates TE support. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te = t + if hasattr(self, '_set'): + self._set() + + def _unset_te(self): + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + network = __builtin__.property(_get_network, _set_network) + te = __builtin__.property(_get_te, _set_te) + + + _pyangbind_elements = OrderedDict([('network', network), ('te', te), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/__init__.py new file mode 100644 index 000000000..302af85c9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/__init__.py @@ -0,0 +1,385 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import network_types +from . import supporting_network +from . import node +from . import link +from . import te_topology_identifier +from . import te +class network(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Describes a network. +A network typically contains an inventory of nodes, +topological information (augmented through the +network-topology data model), and layering information. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_id','__network_types','__supporting_network','__node','__link','__te_topology_identifier','__te',) + + _yang_name = 'network' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='network-id', is_config=True) + self.__network_types = YANGDynClass(base=network_types.network_types, is_container='container', yang_name="network-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + self.__supporting_network = YANGDynClass(base=YANGListType("network_ref",supporting_network.supporting_network, yang_name="supporting-network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref', extensions=None), is_container='list', yang_name="supporting-network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + self.__node = YANGDynClass(base=YANGListType("node_id",node.node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + self.__link = YANGDynClass(base=YANGListType("link_id",link.link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + self.__te_topology_identifier = YANGDynClass(base=te_topology_identifier.te_topology_identifier, is_container='container', yang_name="te-topology-identifier", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network'] + + def _get_network_id(self): + """ + Getter method for network_id, mapped from YANG variable /networks/network/network_id (network-id) + + YANG Description: Identifies a network. + """ + return self.__network_id + + def _set_network_id(self, v, load=False): + """ + Setter method for network_id, mapped from YANG variable /networks/network/network_id (network-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_id() directly. + + YANG Description: Identifies a network. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='network-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_id must be of a type compatible with network-id""", + 'defined-type': "ietf-network:network-id", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='network-id', is_config=True)""", + }) + + self.__network_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_id(self): + self.__network_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='network-id', is_config=True) + + + def _get_network_types(self): + """ + Getter method for network_types, mapped from YANG variable /networks/network/network_types (container) + + YANG Description: Serves as an augmentation target. +The network type is indicated through corresponding +presence containers augmented into this container. + """ + return self.__network_types + + def _set_network_types(self, v, load=False): + """ + Setter method for network_types, mapped from YANG variable /networks/network/network_types (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_types is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_types() directly. + + YANG Description: Serves as an augmentation target. +The network type is indicated through corresponding +presence containers augmented into this container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=network_types.network_types, is_container='container', yang_name="network-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_types must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=network_types.network_types, is_container='container', yang_name="network-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True)""", + }) + + self.__network_types = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_types(self): + self.__network_types = YANGDynClass(base=network_types.network_types, is_container='container', yang_name="network-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='container', is_config=True) + + + def _get_supporting_network(self): + """ + Getter method for supporting_network, mapped from YANG variable /networks/network/supporting_network (list) + + YANG Description: An underlay network, used to represent layered network +topologies. + """ + return self.__supporting_network + + def _set_supporting_network(self, v, load=False): + """ + Setter method for supporting_network, mapped from YANG variable /networks/network/supporting_network (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_supporting_network is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supporting_network() directly. + + YANG Description: An underlay network, used to represent layered network +topologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("network_ref",supporting_network.supporting_network, yang_name="supporting-network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref', extensions=None), is_container='list', yang_name="supporting-network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supporting_network must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("network_ref",supporting_network.supporting_network, yang_name="supporting-network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref', extensions=None), is_container='list', yang_name="supporting-network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True)""", + }) + + self.__supporting_network = t + if hasattr(self, '_set'): + self._set() + + def _unset_supporting_network(self): + self.__supporting_network = YANGDynClass(base=YANGListType("network_ref",supporting_network.supporting_network, yang_name="supporting-network", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref', extensions=None), is_container='list', yang_name="supporting-network", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + + + def _get_node(self): + """ + Getter method for node, mapped from YANG variable /networks/network/node (list) + + YANG Description: The inventory of nodes of this network. + """ + return self.__node + + def _set_node(self, v, load=False): + """ + Setter method for node, mapped from YANG variable /networks/network/node (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node() directly. + + YANG Description: The inventory of nodes of this network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("node_id",node.node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("node_id",node.node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True)""", + }) + + self.__node = t + if hasattr(self, '_set'): + self._set() + + def _unset_node(self): + self.__node = YANGDynClass(base=YANGListType("node_id",node.node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + + + def _get_link(self): + """ + Getter method for link, mapped from YANG variable /networks/network/link (list) + + YANG Description: A network link connects a local (source) node and +a remote (destination) node via a set of the respective +node's termination points. It is possible to have several +links between the same source and destination nodes. +Likewise, a link could potentially be re-homed between +termination points. Therefore, in order to ensure that we +would always know to distinguish between links, every link +is identified by a dedicated link identifier. Note that a +link models a point-to-point link, not a multipoint link. + """ + return self.__link + + def _set_link(self, v, load=False): + """ + Setter method for link, mapped from YANG variable /networks/network/link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link() directly. + + YANG Description: A network link connects a local (source) node and +a remote (destination) node via a set of the respective +node's termination points. It is possible to have several +links between the same source and destination nodes. +Likewise, a link could potentially be re-homed between +termination points. Therefore, in order to ensure that we +would always know to distinguish between links, every link +is identified by a dedicated link identifier. Note that a +link models a point-to-point link, not a multipoint link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("link_id",link.link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("link_id",link.link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True)""", + }) + + self.__link = t + if hasattr(self, '_set'): + self._set() + + def _unset_link(self): + self.__link = YANGDynClass(base=YANGListType("link_id",link.link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + + + def _get_te_topology_identifier(self): + """ + Getter method for te_topology_identifier, mapped from YANG variable /networks/network/te_topology_identifier (container) + + YANG Description: TE topology identifier container. + """ + return self.__te_topology_identifier + + def _set_te_topology_identifier(self, v, load=False): + """ + Setter method for te_topology_identifier, mapped from YANG variable /networks/network/te_topology_identifier (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_topology_identifier is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_topology_identifier() directly. + + YANG Description: TE topology identifier container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_topology_identifier.te_topology_identifier, is_container='container', yang_name="te-topology-identifier", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_topology_identifier must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_topology_identifier.te_topology_identifier, is_container='container', yang_name="te-topology-identifier", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_topology_identifier = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_topology_identifier(self): + self.__te_topology_identifier = YANGDynClass(base=te_topology_identifier.te_topology_identifier, is_container='container', yang_name="te-topology-identifier", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_te(self): + """ + Getter method for te, mapped from YANG variable /networks/network/te (container) + + YANG Description: Indicates TE support. + """ + return self.__te + + def _set_te(self, v, load=False): + """ + Setter method for te, mapped from YANG variable /networks/network/te (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te() directly. + + YANG Description: Indicates TE support. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te = t + if hasattr(self, '_set'): + self._set() + + def _unset_te(self): + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + network_id = __builtin__.property(_get_network_id, _set_network_id) + network_types = __builtin__.property(_get_network_types, _set_network_types) + supporting_network = __builtin__.property(_get_supporting_network, _set_supporting_network) + node = __builtin__.property(_get_node, _set_node) + link = __builtin__.property(_get_link, _set_link) + te_topology_identifier = __builtin__.property(_get_te_topology_identifier, _set_te_topology_identifier) + te = __builtin__.property(_get_te, _set_te) + + + _pyangbind_elements = OrderedDict([('network_id', network_id), ('network_types', network_types), ('supporting_network', supporting_network), ('node', node), ('link', link), ('te_topology_identifier', te_topology_identifier), ('te', te), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/__init__.py new file mode 100644 index 000000000..91937b156 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/__init__.py @@ -0,0 +1,294 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import source +from . import destination +from . import supporting_link +from . import te +class link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A network link connects a local (source) node and +a remote (destination) node via a set of the respective +node's termination points. It is possible to have several +links between the same source and destination nodes. +Likewise, a link could potentially be re-homed between +termination points. Therefore, in order to ensure that we +would always know to distinguish between links, every link +is identified by a dedicated link identifier. Note that a +link models a point-to-point link, not a multipoint link. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_id','__source','__destination','__supporting_link','__te',) + + _yang_name = 'link' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='link-id', is_config=True) + self.__source = YANGDynClass(base=source.source, is_container='container', yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + self.__destination = YANGDynClass(base=destination.destination, is_container='container', yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + self.__supporting_link = YANGDynClass(base=YANGListType("network_ref link_ref",supporting_link.supporting_link, yang_name="supporting-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref link-ref', extensions=None), is_container='list', yang_name="supporting-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link'] + + def _get_link_id(self): + """ + Getter method for link_id, mapped from YANG variable /networks/network/link/link_id (link-id) + + YANG Description: The identifier of a link in the topology. +A link is specific to a topology to which it belongs. + """ + return self.__link_id + + def _set_link_id(self, v, load=False): + """ + Setter method for link_id, mapped from YANG variable /networks/network/link/link_id (link-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_id() directly. + + YANG Description: The identifier of a link in the topology. +A link is specific to a topology to which it belongs. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='link-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_id must be of a type compatible with link-id""", + 'defined-type': "ietf-network-topology:link-id", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='link-id', is_config=True)""", + }) + + self.__link_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_id(self): + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='link-id', is_config=True) + + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/link/source (container) + + YANG Description: This container holds the logical source of a particular +link. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/link/source (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: This container holds the logical source of a particular +link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=source.source, is_container='container', yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=source.source, is_container='container', yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=source.source, is_container='container', yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/link/destination (container) + + YANG Description: This container holds the logical destination of a +particular link. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/link/destination (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: This container holds the logical destination of a +particular link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=destination.destination, is_container='container', yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=destination.destination, is_container='container', yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=destination.destination, is_container='container', yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='container', is_config=True) + + + def _get_supporting_link(self): + """ + Getter method for supporting_link, mapped from YANG variable /networks/network/link/supporting_link (list) + + YANG Description: Identifies the link or links on which this link depends. + """ + return self.__supporting_link + + def _set_supporting_link(self, v, load=False): + """ + Setter method for supporting_link, mapped from YANG variable /networks/network/link/supporting_link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_supporting_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supporting_link() directly. + + YANG Description: Identifies the link or links on which this link depends. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("network_ref link_ref",supporting_link.supporting_link, yang_name="supporting-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref link-ref', extensions=None), is_container='list', yang_name="supporting-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supporting_link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("network_ref link_ref",supporting_link.supporting_link, yang_name="supporting-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref link-ref', extensions=None), is_container='list', yang_name="supporting-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True)""", + }) + + self.__supporting_link = t + if hasattr(self, '_set'): + self._set() + + def _unset_supporting_link(self): + self.__supporting_link = YANGDynClass(base=YANGListType("network_ref link_ref",supporting_link.supporting_link, yang_name="supporting-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref link-ref', extensions=None), is_container='list', yang_name="supporting-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + + + def _get_te(self): + """ + Getter method for te, mapped from YANG variable /networks/network/link/te (container) + + YANG Description: Indicates TE support. + """ + return self.__te + + def _set_te(self, v, load=False): + """ + Setter method for te, mapped from YANG variable /networks/network/link/te (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te() directly. + + YANG Description: Indicates TE support. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te = t + if hasattr(self, '_set'): + self._set() + + def _unset_te(self): + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + link_id = __builtin__.property(_get_link_id, _set_link_id) + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + supporting_link = __builtin__.property(_get_supporting_link, _set_supporting_link) + te = __builtin__.property(_get_te, _set_te) + + + _pyangbind_elements = OrderedDict([('link_id', link_id), ('source', source), ('destination', destination), ('supporting_link', supporting_link), ('te', te), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/destination/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/destination/__init__.py new file mode 100644 index 000000000..ddab21c3e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/destination/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class destination(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/destination. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This container holds the logical destination of a +particular link. + """ + __slots__ = ('_path_helper', '_extmethods', '__dest_node','__dest_tp',) + + _yang_name = 'destination' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__dest_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + self.__dest_tp = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'destination'] + + def _get_dest_node(self): + """ + Getter method for dest_node, mapped from YANG variable /networks/network/link/destination/dest_node (leafref) + + YANG Description: Destination node identifier. Must be in the same +network. + """ + return self.__dest_node + + def _set_dest_node(self, v, load=False): + """ + Setter method for dest_node, mapped from YANG variable /networks/network/link/destination/dest_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_dest_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_dest_node() directly. + + YANG Description: Destination node identifier. Must be in the same +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="dest-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """dest_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__dest_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_dest_node(self): + self.__dest_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + + def _get_dest_tp(self): + """ + Getter method for dest_tp, mapped from YANG variable /networks/network/link/destination/dest_tp (leafref) + + YANG Description: This termination point is located within the +destination node and terminates the link. + """ + return self.__dest_tp + + def _set_dest_tp(self, v, load=False): + """ + Setter method for dest_tp, mapped from YANG variable /networks/network/link/destination/dest_tp (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_dest_tp is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_dest_tp() directly. + + YANG Description: This termination point is located within the +destination node and terminates the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="dest-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """dest_tp must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__dest_tp = t + if hasattr(self, '_set'): + self._set() + + def _unset_dest_tp(self): + self.__dest_tp = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="dest-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + dest_node = __builtin__.property(_get_dest_node, _set_dest_node) + dest_tp = __builtin__.property(_get_dest_tp, _set_dest_tp) + + + _pyangbind_elements = OrderedDict([('dest_node', dest_node), ('dest_tp', dest_tp), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/source/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/source/__init__.py new file mode 100644 index 000000000..7538dfd44 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/source/__init__.py @@ -0,0 +1,157 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class source(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/source. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This container holds the logical source of a particular +link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source_node','__source_tp',) + + _yang_name = 'source' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + self.__source_tp = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'source'] + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /networks/network/link/source/source_node (leafref) + + YANG Description: Source node identifier. Must be in the same topology. + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /networks/network/link/source/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + + YANG Description: Source node identifier. Must be in the same topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + + def _get_source_tp(self): + """ + Getter method for source_tp, mapped from YANG variable /networks/network/link/source/source_tp (leafref) + + YANG Description: This termination point is located within the source node +and terminates the link. + """ + return self.__source_tp + + def _set_source_tp(self, v, load=False): + """ + Setter method for source_tp, mapped from YANG variable /networks/network/link/source/source_tp (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_tp is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_tp() directly. + + YANG Description: This termination point is located within the source node +and terminates the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_tp must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_tp = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_tp(self): + self.__source_tp = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + source_node = __builtin__.property(_get_source_node, _set_source_node) + source_tp = __builtin__.property(_get_source_tp, _set_source_tp) + + + _pyangbind_elements = OrderedDict([('source_node', source_node), ('source_tp', source_tp), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/supporting_link/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/supporting_link/__init__.py new file mode 100644 index 000000000..28a780f5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/supporting_link/__init__.py @@ -0,0 +1,172 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class supporting_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/supporting-link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Identifies the link or links on which this link depends. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__link_ref',) + + _yang_name = 'supporting-link' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'supporting-link'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/supporting_link/network_ref (leafref) + + YANG Description: This leaf identifies in which underlay topology +the supporting link is present. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/supporting_link/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: This leaf identifies in which underlay topology +the supporting link is present. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + + def _get_link_ref(self): + """ + Getter method for link_ref, mapped from YANG variable /networks/network/link/supporting_link/link_ref (leafref) + + YANG Description: This leaf identifies a link that is a part +of this link's underlay. Reference loops in which +a link identifies itself as its underlay, either +directly or transitively, are not allowed. + """ + return self.__link_ref + + def _set_link_ref(self, v, load=False): + """ + Setter method for link_ref, mapped from YANG variable /networks/network/link/supporting_link/link_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_ref() directly. + + YANG Description: This leaf identifies a link that is a part +of this link's underlay. Reference loops in which +a link identifies itself as its underlay, either +directly or transitively, are not allowed. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__link_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_ref(self): + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + link_ref = __builtin__.property(_get_link_ref, _set_link_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('link_ref', link_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/__init__.py new file mode 100644 index 000000000..666d97181 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/__init__.py @@ -0,0 +1,603 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import bundled_links +from . import component_links +from . import te_link_attributes +from . import information_source_state +from . import information_source_entry +from . import recovery +from . import underlay +from . import statistics +class te(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates TE support. + """ + __slots__ = ('_path_helper', '_extmethods', '__bundled_links','__component_links','__te_link_template','__te_link_attributes','__oper_status','__is_transitional','__information_source','__information_source_instance','__information_source_state','__information_source_entry','__recovery','__underlay','__statistics',) + + _yang_name = 'te' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__bundled_links = YANGDynClass(base=bundled_links.bundled_links, is_container='container', yang_name="bundled-links", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__component_links = YANGDynClass(base=component_links.component_links, is_container='container', yang_name="component-links", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__te_link_template = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__te_link_attributes = YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + self.__is_transitional = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-transitional", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__information_source_entry = YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__recovery = YANGDynClass(base=recovery.recovery, is_container='container', yang_name="recovery", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te'] + + def _get_bundled_links(self): + """ + Getter method for bundled_links, mapped from YANG variable /networks/network/link/te/bundled_links (container) + + YANG Description: A set of bundled links. + """ + return self.__bundled_links + + def _set_bundled_links(self, v, load=False): + """ + Setter method for bundled_links, mapped from YANG variable /networks/network/link/te/bundled_links (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_bundled_links is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bundled_links() directly. + + YANG Description: A set of bundled links. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=bundled_links.bundled_links, is_container='container', yang_name="bundled-links", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bundled_links must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=bundled_links.bundled_links, is_container='container', yang_name="bundled-links", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__bundled_links = t + if hasattr(self, '_set'): + self._set() + + def _unset_bundled_links(self): + self.__bundled_links = YANGDynClass(base=bundled_links.bundled_links, is_container='container', yang_name="bundled-links", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_component_links(self): + """ + Getter method for component_links, mapped from YANG variable /networks/network/link/te/component_links (container) + + YANG Description: A set of component links. + """ + return self.__component_links + + def _set_component_links(self, v, load=False): + """ + Setter method for component_links, mapped from YANG variable /networks/network/link/te/component_links (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_component_links is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_component_links() directly. + + YANG Description: A set of component links. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=component_links.component_links, is_container='container', yang_name="component-links", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """component_links must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=component_links.component_links, is_container='container', yang_name="component-links", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__component_links = t + if hasattr(self, '_set'): + self._set() + + def _unset_component_links(self): + self.__component_links = YANGDynClass(base=component_links.component_links, is_container='container', yang_name="component-links", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_te_link_template(self): + """ + Getter method for te_link_template, mapped from YANG variable /networks/network/link/te/te_link_template (leafref) + + YANG Description: The reference to a TE link template. + """ + return self.__te_link_template + + def _set_te_link_template(self, v, load=False): + """ + Setter method for te_link_template, mapped from YANG variable /networks/network/link/te/te_link_template (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_link_template is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_link_template() directly. + + YANG Description: The reference to a TE link template. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_link_template must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__te_link_template = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_link_template(self): + self.__te_link_template = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_te_link_attributes(self): + """ + Getter method for te_link_attributes, mapped from YANG variable /networks/network/link/te/te_link_attributes (container) + + YANG Description: Link attributes in a TE topology. + """ + return self.__te_link_attributes + + def _set_te_link_attributes(self, v, load=False): + """ + Setter method for te_link_attributes, mapped from YANG variable /networks/network/link/te/te_link_attributes (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_link_attributes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_link_attributes() directly. + + YANG Description: Link attributes in a TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_link_attributes must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_link_attributes = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_link_attributes(self): + self.__te_link_attributes = YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /networks/network/link/te/oper_status (te-types:te-oper-status) + + YANG Description: The current operational state of the link. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /networks/network/link/te/oper_status (te-types:te-oper-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with te-types:te-oper-status""", + 'defined-type': "te-types:te-oper-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + + + def _get_is_transitional(self): + """ + Getter method for is_transitional, mapped from YANG variable /networks/network/link/te/is_transitional (empty) + + YANG Description: Present if the link is transitional; used as an +alternative approach in lieu of 'inter-layer-lock-id' +for path computation in a TE topology covering multiple +layers or multiple regions. + """ + return self.__is_transitional + + def _set_is_transitional(self, v, load=False): + """ + Setter method for is_transitional, mapped from YANG variable /networks/network/link/te/is_transitional (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_transitional is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_transitional() directly. + + YANG Description: Present if the link is transitional; used as an +alternative approach in lieu of 'inter-layer-lock-id' +for path computation in a TE topology covering multiple +layers or multiple regions. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-transitional", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_transitional must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-transitional", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False)""", + }) + + self.__is_transitional = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_transitional(self): + self.__is_transitional = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-transitional", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + + + def _get_information_source(self): + """ + Getter method for information_source, mapped from YANG variable /networks/network/link/te/information_source (te-info-source) + + YANG Description: Indicates the type of information source. + """ + return self.__information_source + + def _set_information_source(self, v, load=False): + """ + Setter method for information_source, mapped from YANG variable /networks/network/link/te/information_source (te-info-source) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source() directly. + + YANG Description: Indicates the type of information source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source must be of a type compatible with te-info-source""", + 'defined-type': "ietf-te-topology:te-info-source", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False)""", + }) + + self.__information_source = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source(self): + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + + + def _get_information_source_instance(self): + """ + Getter method for information_source_instance, mapped from YANG variable /networks/network/link/te/information_source_instance (string) + + YANG Description: The name indicating the instance of the information +source. + """ + return self.__information_source_instance + + def _set_information_source_instance(self, v, load=False): + """ + Setter method for information_source_instance, mapped from YANG variable /networks/network/link/te/information_source_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_instance() directly. + + YANG Description: The name indicating the instance of the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__information_source_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_instance(self): + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_information_source_state(self): + """ + Getter method for information_source_state, mapped from YANG variable /networks/network/link/te/information_source_state (container) + + YANG Description: Contains state attributes related to the information +source. + """ + return self.__information_source_state + + def _set_information_source_state(self, v, load=False): + """ + Setter method for information_source_state, mapped from YANG variable /networks/network/link/te/information_source_state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_state() directly. + + YANG Description: Contains state attributes related to the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__information_source_state = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_state(self): + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_information_source_entry(self): + """ + Getter method for information_source_entry, mapped from YANG variable /networks/network/link/te/information_source_entry (list) + + YANG Description: A list of information sources learned, including the source +that is used. + """ + return self.__information_source_entry + + def _set_information_source_entry(self, v, load=False): + """ + Setter method for information_source_entry, mapped from YANG variable /networks/network/link/te/information_source_entry (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_entry is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_entry() directly. + + YANG Description: A list of information sources learned, including the source +that is used. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_entry must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__information_source_entry = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_entry(self): + self.__information_source_entry = YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_recovery(self): + """ + Getter method for recovery, mapped from YANG variable /networks/network/link/te/recovery (container) + + YANG Description: Status of the recovery process. + """ + return self.__recovery + + def _set_recovery(self, v, load=False): + """ + Setter method for recovery, mapped from YANG variable /networks/network/link/te/recovery (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_recovery is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_recovery() directly. + + YANG Description: Status of the recovery process. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=recovery.recovery, is_container='container', yang_name="recovery", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """recovery must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=recovery.recovery, is_container='container', yang_name="recovery", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__recovery = t + if hasattr(self, '_set'): + self._set() + + def _unset_recovery(self): + self.__recovery = YANGDynClass(base=recovery.recovery, is_container='container', yang_name="recovery", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/link/te/underlay (container) + + YANG Description: State attributes for the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/link/te/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: State attributes for the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_statistics(self): + """ + Getter method for statistics, mapped from YANG variable /networks/network/link/te/statistics (container) + + YANG Description: Statistics data. + """ + return self.__statistics + + def _set_statistics(self, v, load=False): + """ + Setter method for statistics, mapped from YANG variable /networks/network/link/te/statistics (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_statistics is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_statistics() directly. + + YANG Description: Statistics data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """statistics must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__statistics = t + if hasattr(self, '_set'): + self._set() + + def _unset_statistics(self): + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + bundled_links = __builtin__.property(_get_bundled_links, _set_bundled_links) + component_links = __builtin__.property(_get_component_links, _set_component_links) + te_link_template = __builtin__.property(_get_te_link_template, _set_te_link_template) + te_link_attributes = __builtin__.property(_get_te_link_attributes, _set_te_link_attributes) + oper_status = __builtin__.property(_get_oper_status) + is_transitional = __builtin__.property(_get_is_transitional) + information_source = __builtin__.property(_get_information_source) + information_source_instance = __builtin__.property(_get_information_source_instance) + information_source_state = __builtin__.property(_get_information_source_state) + information_source_entry = __builtin__.property(_get_information_source_entry) + recovery = __builtin__.property(_get_recovery) + underlay = __builtin__.property(_get_underlay) + statistics = __builtin__.property(_get_statistics) + + __choices__ = {'bundle-stack-level': {'bundle': ['bundled_links'], 'component': ['component_links']}} + _pyangbind_elements = OrderedDict([('bundled_links', bundled_links), ('component_links', component_links), ('te_link_template', te_link_template), ('te_link_attributes', te_link_attributes), ('oper_status', oper_status), ('is_transitional', is_transitional), ('information_source', information_source), ('information_source_instance', information_source_instance), ('information_source_state', information_source_state), ('information_source_entry', information_source_entry), ('recovery', recovery), ('underlay', underlay), ('statistics', statistics), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/__init__.py new file mode 100644 index 000000000..890484652 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import bundled_link +class bundled_links(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/bundled-links. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A set of bundled links. + """ + __slots__ = ('_path_helper', '_extmethods', '__bundled_link',) + + _yang_name = 'bundled-links' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__bundled_link = YANGDynClass(base=YANGListType("sequence",bundled_link.bundled_link, yang_name="bundled-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'bundle')), is_container='list', yang_name="bundled-link", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'bundled-links'] + + def _get_bundled_link(self): + """ + Getter method for bundled_link, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link (list) + + YANG Description: Specifies a bundled interface that is +further partitioned. + """ + return self.__bundled_link + + def _set_bundled_link(self, v, load=False): + """ + Setter method for bundled_link, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_bundled_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bundled_link() directly. + + YANG Description: Specifies a bundled interface that is +further partitioned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("sequence",bundled_link.bundled_link, yang_name="bundled-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'bundle')), is_container='list', yang_name="bundled-link", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bundled_link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("sequence",bundled_link.bundled_link, yang_name="bundled-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'bundle')), is_container='list', yang_name="bundled-link", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__bundled_link = t + if hasattr(self, '_set'): + self._set() + + def _unset_bundled_link(self): + self.__bundled_link = YANGDynClass(base=YANGListType("sequence",bundled_link.bundled_link, yang_name="bundled-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'bundle')), is_container='list', yang_name="bundled-link", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + bundled_link = __builtin__.property(_get_bundled_link, _set_bundled_link) + + __choices__ = {'bundle-stack-level': {'bundle': ['bundled_link']}} + _pyangbind_elements = OrderedDict([('bundled_link', bundled_link), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/bundled_link/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/bundled_link/__init__.py new file mode 100644 index 000000000..99c0b71fe --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/bundled_links/bundled_link/__init__.py @@ -0,0 +1,203 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class bundled_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/bundled-links/bundled-link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Specifies a bundled interface that is +further partitioned. + """ + __slots__ = ('_path_helper', '_extmethods', '__sequence','__src_tp_ref','__des_tp_ref',) + + _yang_name = 'bundled-link' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sequence = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__src_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__des_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'bundled-links', 'bundled-link'] + + def _get_sequence(self): + """ + Getter method for sequence, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/sequence (uint32) + + YANG Description: Identifies the sequence in the bundle. + """ + return self.__sequence + + def _set_sequence(self, v, load=False): + """ + Setter method for sequence, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/sequence (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_sequence is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sequence() directly. + + YANG Description: Identifies the sequence in the bundle. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sequence must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__sequence = t + if hasattr(self, '_set'): + self._set() + + def _unset_sequence(self): + self.__sequence = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_src_tp_ref(self): + """ + Getter method for src_tp_ref, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/src_tp_ref (leafref) + + YANG Description: Reference to another TE termination point on the +same source node. + """ + return self.__src_tp_ref + + def _set_src_tp_ref(self, v, load=False): + """ + Setter method for src_tp_ref, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/src_tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_src_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_src_tp_ref() directly. + + YANG Description: Reference to another TE termination point on the +same source node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="src-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """src_tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__src_tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_src_tp_ref(self): + self.__src_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_des_tp_ref(self): + """ + Getter method for des_tp_ref, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/des_tp_ref (leafref) + + YANG Description: Reference to another TE termination point on the +same destination node. + """ + return self.__des_tp_ref + + def _set_des_tp_ref(self, v, load=False): + """ + Setter method for des_tp_ref, mapped from YANG variable /networks/network/link/te/bundled_links/bundled_link/des_tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_des_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_des_tp_ref() directly. + + YANG Description: Reference to another TE termination point on the +same destination node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="des-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """des_tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__des_tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_des_tp_ref(self): + self.__des_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-tp-ref", parent=self, choice=('bundle-stack-level', 'bundle'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + sequence = __builtin__.property(_get_sequence, _set_sequence) + src_tp_ref = __builtin__.property(_get_src_tp_ref, _set_src_tp_ref) + des_tp_ref = __builtin__.property(_get_des_tp_ref, _set_des_tp_ref) + + __choices__ = {'bundle-stack-level': {'bundle': ['sequence', 'src_tp_ref', 'des_tp_ref']}} + _pyangbind_elements = OrderedDict([('sequence', sequence), ('src_tp_ref', src_tp_ref), ('des_tp_ref', des_tp_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/__init__.py new file mode 100644 index 000000000..2207417bc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import component_link +class component_links(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/component-links. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A set of component links. + """ + __slots__ = ('_path_helper', '_extmethods', '__component_link',) + + _yang_name = 'component-links' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__component_link = YANGDynClass(base=YANGListType("sequence",component_link.component_link, yang_name="component-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'component')), is_container='list', yang_name="component-link", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'component-links'] + + def _get_component_link(self): + """ + Getter method for component_link, mapped from YANG variable /networks/network/link/te/component_links/component_link (list) + + YANG Description: Specifies a component interface that is +sufficient to unambiguously identify the +appropriate resources. + """ + return self.__component_link + + def _set_component_link(self, v, load=False): + """ + Setter method for component_link, mapped from YANG variable /networks/network/link/te/component_links/component_link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_component_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_component_link() directly. + + YANG Description: Specifies a component interface that is +sufficient to unambiguously identify the +appropriate resources. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("sequence",component_link.component_link, yang_name="component-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'component')), is_container='list', yang_name="component-link", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """component_link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("sequence",component_link.component_link, yang_name="component-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'component')), is_container='list', yang_name="component-link", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__component_link = t + if hasattr(self, '_set'): + self._set() + + def _unset_component_link(self): + self.__component_link = YANGDynClass(base=YANGListType("sequence",component_link.component_link, yang_name="component-link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='sequence', extensions=None, choice=('bundle-stack-level', 'component')), is_container='list', yang_name="component-link", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + component_link = __builtin__.property(_get_component_link, _set_component_link) + + __choices__ = {'bundle-stack-level': {'component': ['component_link']}} + _pyangbind_elements = OrderedDict([('component_link', component_link), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/component_link/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/component_link/__init__.py new file mode 100644 index 000000000..5995318d7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/component_links/component_link/__init__.py @@ -0,0 +1,204 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class component_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/component-links/component-link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Specifies a component interface that is +sufficient to unambiguously identify the +appropriate resources. + """ + __slots__ = ('_path_helper', '_extmethods', '__sequence','__src_interface_ref','__des_interface_ref',) + + _yang_name = 'component-link' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sequence = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__src_interface_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__des_interface_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'component-links', 'component-link'] + + def _get_sequence(self): + """ + Getter method for sequence, mapped from YANG variable /networks/network/link/te/component_links/component_link/sequence (uint32) + + YANG Description: Identifies the sequence in the bundle. + """ + return self.__sequence + + def _set_sequence(self, v, load=False): + """ + Setter method for sequence, mapped from YANG variable /networks/network/link/te/component_links/component_link/sequence (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_sequence is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sequence() directly. + + YANG Description: Identifies the sequence in the bundle. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sequence must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__sequence = t + if hasattr(self, '_set'): + self._set() + + def _unset_sequence(self): + self.__sequence = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="sequence", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_src_interface_ref(self): + """ + Getter method for src_interface_ref, mapped from YANG variable /networks/network/link/te/component_links/component_link/src_interface_ref (string) + + YANG Description: Reference to a component link interface on the +source node. + """ + return self.__src_interface_ref + + def _set_src_interface_ref(self, v, load=False): + """ + Setter method for src_interface_ref, mapped from YANG variable /networks/network/link/te/component_links/component_link/src_interface_ref (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_src_interface_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_src_interface_ref() directly. + + YANG Description: Reference to a component link interface on the +source node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="src-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """src_interface_ref must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__src_interface_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_src_interface_ref(self): + self.__src_interface_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="src-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_des_interface_ref(self): + """ + Getter method for des_interface_ref, mapped from YANG variable /networks/network/link/te/component_links/component_link/des_interface_ref (string) + + YANG Description: Reference to a component link interface on the +destination node. + """ + return self.__des_interface_ref + + def _set_des_interface_ref(self, v, load=False): + """ + Setter method for des_interface_ref, mapped from YANG variable /networks/network/link/te/component_links/component_link/des_interface_ref (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_des_interface_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_des_interface_ref() directly. + + YANG Description: Reference to a component link interface on the +destination node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="des-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """des_interface_ref must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__des_interface_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_des_interface_ref(self): + self.__des_interface_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="des-interface-ref", parent=self, choice=('bundle-stack-level', 'component'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + sequence = __builtin__.property(_get_sequence, _set_sequence) + src_interface_ref = __builtin__.property(_get_src_interface_ref, _set_src_interface_ref) + des_interface_ref = __builtin__.property(_get_des_interface_ref, _set_des_interface_ref) + + __choices__ = {'bundle-stack-level': {'component': ['sequence', 'src_interface_ref', 'des_interface_ref']}} + _pyangbind_elements = OrderedDict([('sequence', sequence), ('src_interface_ref', src_interface_ref), ('des_interface_ref', des_interface_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/__init__.py new file mode 100644 index 000000000..d331b67df --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/__init__.py @@ -0,0 +1,749 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import information_source_state +from . import interface_switching_capability +from . import label_restrictions +from . import max_link_bandwidth +from . import max_resv_link_bandwidth +from . import unreserved_bandwidth +from . import te_srlgs +from . import te_nsrlgs +class information_source_entry(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of information sources learned, including the source +that is used. + """ + __slots__ = ('_path_helper', '_extmethods', '__information_source','__information_source_instance','__information_source_state','__link_index','__administrative_group','__interface_switching_capability','__label_restrictions','__link_protection_type','__max_link_bandwidth','__max_resv_link_bandwidth','__unreserved_bandwidth','__te_default_metric','__te_delay_metric','__te_igp_metric','__te_srlgs','__te_nsrlgs',) + + _yang_name = 'information-source-entry' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=False) + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry'] + + def _get_information_source(self): + """ + Getter method for information_source, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source (te-info-source) + + YANG Description: Indicates the type of information source. + """ + return self.__information_source + + def _set_information_source(self, v, load=False): + """ + Setter method for information_source, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source (te-info-source) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source() directly. + + YANG Description: Indicates the type of information source. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source must be of a type compatible with te-info-source""", + 'defined-type': "ietf-te-topology:te-info-source", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False)""", + }) + + self.__information_source = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source(self): + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + + + def _get_information_source_instance(self): + """ + Getter method for information_source_instance, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_instance (string) + + YANG Description: The name indicating the instance of the information +source. + """ + return self.__information_source_instance + + def _set_information_source_instance(self, v, load=False): + """ + Setter method for information_source_instance, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_instance() directly. + + YANG Description: The name indicating the instance of the information +source. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__information_source_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_instance(self): + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_information_source_state(self): + """ + Getter method for information_source_state, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state (container) + + YANG Description: Contains state attributes related to the information +source. + """ + return self.__information_source_state + + def _set_information_source_state(self, v, load=False): + """ + Setter method for information_source_state, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_state() directly. + + YANG Description: Contains state attributes related to the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__information_source_state = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_state(self): + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_link_index(self): + """ + Getter method for link_index, mapped from YANG variable /networks/network/link/te/information_source_entry/link_index (uint64) + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + return self.__link_index + + def _set_link_index(self, v, load=False): + """ + Setter method for link_index, mapped from YANG variable /networks/network/link/te/information_source_entry/link_index (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_index() directly. + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_index must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__link_index = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_index(self): + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + + def _get_administrative_group(self): + """ + Getter method for administrative_group, mapped from YANG variable /networks/network/link/te/information_source_entry/administrative_group (te-types:admin-groups) + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + return self.__administrative_group + + def _set_administrative_group(self, v, load=False): + """ + Setter method for administrative_group, mapped from YANG variable /networks/network/link/te/information_source_entry/administrative_group (te-types:admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_administrative_group is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_administrative_group() directly. + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """administrative_group must be of a type compatible with te-types:admin-groups""", + 'defined-type': "te-types:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=False)""", + }) + + self.__administrative_group = t + if hasattr(self, '_set'): + self._set() + + def _unset_administrative_group(self): + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=False) + + + def _get_interface_switching_capability(self): + """ + Getter method for interface_switching_capability, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability (list) + + YANG Description: List of ISCDs for this link. + """ + return self.__interface_switching_capability + + def _set_interface_switching_capability(self, v, load=False): + """ + Setter method for interface_switching_capability, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_interface_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interface_switching_capability() directly. + + YANG Description: List of ISCDs for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interface_switching_capability must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__interface_switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_interface_switching_capability(self): + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_link_protection_type(self): + """ + Getter method for link_protection_type, mapped from YANG variable /networks/network/link/te/information_source_entry/link_protection_type (identityref) + + YANG Description: Link Protection Type desired for this link. + """ + return self.__link_protection_type + + def _set_link_protection_type(self, v, load=False): + """ + Setter method for link_protection_type, mapped from YANG variable /networks/network/link/te/information_source_entry/link_protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection_type() directly. + + YANG Description: Link Protection Type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__link_protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection_type(self): + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_max_link_bandwidth(self): + """ + Getter method for max_link_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth (container) + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + return self.__max_link_bandwidth + + def _set_max_link_bandwidth(self, v, load=False): + """ + Setter method for max_link_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_link_bandwidth() directly. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__max_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_link_bandwidth(self): + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_max_resv_link_bandwidth(self): + """ + Getter method for max_resv_link_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth (container) + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + return self.__max_resv_link_bandwidth + + def _set_max_resv_link_bandwidth(self, v, load=False): + """ + Setter method for max_resv_link_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_resv_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_resv_link_bandwidth() directly. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_resv_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__max_resv_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_resv_link_bandwidth(self): + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unreserved_bandwidth(self): + """ + Getter method for unreserved_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth (list) + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + return self.__unreserved_bandwidth + + def _set_unreserved_bandwidth(self, v, load=False): + """ + Setter method for unreserved_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_unreserved_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unreserved_bandwidth() directly. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unreserved_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__unreserved_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_unreserved_bandwidth(self): + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_te_default_metric(self): + """ + Getter method for te_default_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_default_metric (uint32) + + YANG Description: Traffic Engineering metric. + """ + return self.__te_default_metric + + def _set_te_default_metric(self, v, load=False): + """ + Setter method for te_default_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_default_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_default_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_default_metric() directly. + + YANG Description: Traffic Engineering metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_default_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__te_default_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_default_metric(self): + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_te_delay_metric(self): + """ + Getter method for te_delay_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_delay_metric (uint32) + + YANG Description: Traffic Engineering delay metric. + """ + return self.__te_delay_metric + + def _set_te_delay_metric(self, v, load=False): + """ + Setter method for te_delay_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_delay_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_delay_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_delay_metric() directly. + + YANG Description: Traffic Engineering delay metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_delay_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__te_delay_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_delay_metric(self): + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_te_igp_metric(self): + """ + Getter method for te_igp_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_igp_metric (uint32) + + YANG Description: IGP metric used for Traffic Engineering. + """ + return self.__te_igp_metric + + def _set_te_igp_metric(self, v, load=False): + """ + Setter method for te_igp_metric, mapped from YANG variable /networks/network/link/te/information_source_entry/te_igp_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_igp_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_igp_metric() directly. + + YANG Description: IGP metric used for Traffic Engineering. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_igp_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__te_igp_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_igp_metric(self): + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_te_srlgs(self): + """ + Getter method for te_srlgs, mapped from YANG variable /networks/network/link/te/information_source_entry/te_srlgs (container) + + YANG Description: Contains a list of SRLGs. + """ + return self.__te_srlgs + + def _set_te_srlgs(self, v, load=False): + """ + Setter method for te_srlgs, mapped from YANG variable /networks/network/link/te/information_source_entry/te_srlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_srlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_srlgs() directly. + + YANG Description: Contains a list of SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_srlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_srlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_srlgs(self): + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_te_nsrlgs(self): + """ + Getter method for te_nsrlgs, mapped from YANG variable /networks/network/link/te/information_source_entry/te_nsrlgs (container) + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + return self.__te_nsrlgs + + def _set_te_nsrlgs(self, v, load=False): + """ + Setter method for te_nsrlgs, mapped from YANG variable /networks/network/link/te/information_source_entry/te_nsrlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_nsrlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_nsrlgs() directly. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_nsrlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_nsrlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_nsrlgs(self): + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + information_source = __builtin__.property(_get_information_source) + information_source_instance = __builtin__.property(_get_information_source_instance) + information_source_state = __builtin__.property(_get_information_source_state) + link_index = __builtin__.property(_get_link_index) + administrative_group = __builtin__.property(_get_administrative_group) + interface_switching_capability = __builtin__.property(_get_interface_switching_capability) + label_restrictions = __builtin__.property(_get_label_restrictions) + link_protection_type = __builtin__.property(_get_link_protection_type) + max_link_bandwidth = __builtin__.property(_get_max_link_bandwidth) + max_resv_link_bandwidth = __builtin__.property(_get_max_resv_link_bandwidth) + unreserved_bandwidth = __builtin__.property(_get_unreserved_bandwidth) + te_default_metric = __builtin__.property(_get_te_default_metric) + te_delay_metric = __builtin__.property(_get_te_delay_metric) + te_igp_metric = __builtin__.property(_get_te_igp_metric) + te_srlgs = __builtin__.property(_get_te_srlgs) + te_nsrlgs = __builtin__.property(_get_te_nsrlgs) + + + _pyangbind_elements = OrderedDict([('information_source', information_source), ('information_source_instance', information_source_instance), ('information_source_state', information_source_state), ('link_index', link_index), ('administrative_group', administrative_group), ('interface_switching_capability', interface_switching_capability), ('label_restrictions', label_restrictions), ('link_protection_type', link_protection_type), ('max_link_bandwidth', max_link_bandwidth), ('max_resv_link_bandwidth', max_resv_link_bandwidth), ('unreserved_bandwidth', unreserved_bandwidth), ('te_default_metric', te_default_metric), ('te_delay_metric', te_delay_metric), ('te_igp_metric', te_igp_metric), ('te_srlgs', te_srlgs), ('te_nsrlgs', te_nsrlgs), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/__init__.py new file mode 100644 index 000000000..51885bb49 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/__init__.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import topology +class information_source_state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/information-source-state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains state attributes related to the information +source. + """ + __slots__ = ('_path_helper', '_extmethods', '__credibility_preference','__logical_network_element','__network_instance','__topology',) + + _yang_name = 'information-source-state' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'information-source-state'] + + def _get_credibility_preference(self): + """ + Getter method for credibility_preference, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/credibility_preference (uint16) + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + return self.__credibility_preference + + def _set_credibility_preference(self, v, load=False): + """ + Setter method for credibility_preference, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/credibility_preference (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_credibility_preference is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_credibility_preference() directly. + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """credibility_preference must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__credibility_preference = t + if hasattr(self, '_set'): + self._set() + + def _unset_credibility_preference(self): + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + + + def _get_logical_network_element(self): + """ + Getter method for logical_network_element, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/logical_network_element (string) + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + return self.__logical_network_element + + def _set_logical_network_element(self, v, load=False): + """ + Setter method for logical_network_element, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/logical_network_element (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical_network_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical_network_element() directly. + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical_network_element must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__logical_network_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical_network_element(self): + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_network_instance(self): + """ + Getter method for network_instance, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/network_instance (string) + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + return self.__network_instance + + def _set_network_instance(self, v, load=False): + """ + Setter method for network_instance, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/network_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_instance() directly. + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__network_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_instance(self): + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology (container) + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + credibility_preference = __builtin__.property(_get_credibility_preference) + logical_network_element = __builtin__.property(_get_logical_network_element) + network_instance = __builtin__.property(_get_network_instance) + topology = __builtin__.property(_get_topology) + + + _pyangbind_elements = OrderedDict([('credibility_preference', credibility_preference), ('logical_network_element', logical_network_element), ('network_instance', network_instance), ('topology', topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/topology/__init__.py new file mode 100644 index 000000000..0c611a8e1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/information_source_state/topology/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/information-source-state/topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_ref','__network_ref',) + + _yang_name = 'topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'information-source-state', 'topology'] + + def _get_link_ref(self): + """ + Getter method for link_ref, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology/link_ref (leafref) + + YANG Description: A type for an absolute reference to a link instance. +(This type should not be used for relative references. +In such a case, a relative path should be used instead.) + """ + return self.__link_ref + + def _set_link_ref(self, v, load=False): + """ + Setter method for link_ref, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology/link_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_ref() directly. + + YANG Description: A type for an absolute reference to a link instance. +(This type should not be used for relative references. +In such a case, a relative path should be used instead.) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__link_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_ref(self): + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/te/information_source_entry/information_source_state/topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + link_ref = __builtin__.property(_get_link_ref) + network_ref = __builtin__.property(_get_network_ref) + + + _pyangbind_elements = OrderedDict([('link_ref', link_ref), ('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/__init__.py new file mode 100644 index 000000000..55c5599b7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import max_lsp_bandwidth +class interface_switching_capability(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/interface-switching-capability. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of ISCDs for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability','__encoding','__max_lsp_bandwidth',) + + _yang_name = 'interface-switching-capability' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'interface-switching-capability'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/switching_capability (identityref) + + YANG Description: Switching capability for this interface. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/encoding (identityref) + + YANG Description: Encoding supported by this interface. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_max_lsp_bandwidth(self): + """ + Getter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth (list) + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + return self.__max_lsp_bandwidth + + def _set_max_lsp_bandwidth(self, v, load=False): + """ + Setter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_lsp_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_lsp_bandwidth() directly. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_lsp_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__max_lsp_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_lsp_bandwidth(self): + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + switching_capability = __builtin__.property(_get_switching_capability) + encoding = __builtin__.property(_get_encoding) + max_lsp_bandwidth = __builtin__.property(_get_max_lsp_bandwidth) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ('encoding', encoding), ('max_lsp_bandwidth', max_lsp_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/__init__.py new file mode 100644 index 000000000..752eac929 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_lsp_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/interface-switching-capability/max-lsp-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'max-lsp-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'interface-switching-capability', 'max-lsp-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + priority = __builtin__.property(_get_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..4daa8700c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/interface-switching-capability/max-lsp-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..ad8f9372d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/interface-switching-capability/max-lsp-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__max_ts_number',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_max_ts_number(self): + """ + Getter method for max_ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + return self.__max_ts_number + + def _set_max_ts_number(self, v, load=False): + """ + Setter method for max_ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_ts_number() directly. + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__max_ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_ts_number(self): + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + max_ts_number = __builtin__.property(_get_max_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'max_ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('max_ts_number', max_ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/__init__.py new file mode 100644 index 000000000..47f225a47 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + label_restriction = __builtin__.property(_get_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..c7ec9312d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + restriction = __builtin__.property(_get_restriction) + index = __builtin__.property(_get_index) + label_start = __builtin__.property(_get_label_start) + label_end = __builtin__.property(_get_label_end) + label_step = __builtin__.property(_get_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..24ee2d6c9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + tag_type = __builtin__.property(_get_tag_type) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..105618cf9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..696280486 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..7e552cd7f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..06a33be37 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..1d3235b98 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..4a9eb242f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..e7fa272ea --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_step = __builtin__.property(_get_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..335aed796 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..0c3ff7aaa --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + range_type = __builtin__.property(_get_range_type) + tsg = __builtin__.property(_get_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/__init__.py new file mode 100644 index 000000000..cfa184bcb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_bandwidth = __builtin__.property(_get_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..26e64557c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..ff7bba04a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + odulist = __builtin__.property(_get_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..544fbbda7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + number = __builtin__.property(_get_number) + ts_number = __builtin__.property(_get_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/__init__.py new file mode 100644 index 000000000..08adf3f16 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_resv_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-resv-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-resv-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-resv-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_bandwidth = __builtin__.property(_get_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..bf441d72d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-resv-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-resv-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..1e7147727 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-resv-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + odulist = __builtin__.property(_get_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..aff2126e7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/max-resv-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + number = __builtin__.property(_get_number) + ts_number = __builtin__.property(_get_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_nsrlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_nsrlgs/__init__.py new file mode 100644 index 000000000..a6704d845 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_nsrlgs/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_nsrlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/te-nsrlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + __slots__ = ('_path_helper', '_extmethods', '__id',) + + _yang_name = 'te-nsrlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'te-nsrlgs'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/network/link/te/information_source_entry/te_nsrlgs/id (uint32) + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/network/link/te/information_source_entry/te_nsrlgs/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + id = __builtin__.property(_get_id) + + + _pyangbind_elements = OrderedDict([('id', id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_srlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_srlgs/__init__.py new file mode 100644 index 000000000..9c51afe6b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/te_srlgs/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_srlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/te-srlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__value',) + + _yang_name = 'te-srlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'te-srlgs'] + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/link/te/information_source_entry/te_srlgs/value (te-types:srlg) + + YANG Description: SRLG value. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/link/te/information_source_entry/te_srlgs/value (te-types:srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with te-types:srlg""", + 'defined-type': "te-types:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=False) + + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/__init__.py new file mode 100644 index 000000000..a21517063 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class unreserved_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/unreserved-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'unreserved-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'unreserved-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + priority = __builtin__.property(_get_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..c786d1941 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/unreserved-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'unreserved-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..8e3a01bca --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/unreserved-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'unreserved-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + odulist = __builtin__.property(_get_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..a0e9a8f1d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-entry/unreserved-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-entry', 'unreserved-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/information_source_entry/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + number = __builtin__.property(_get_number) + ts_number = __builtin__.property(_get_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/__init__.py new file mode 100644 index 000000000..4646d0026 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/__init__.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import topology +class information_source_state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains state attributes related to the information +source. + """ + __slots__ = ('_path_helper', '_extmethods', '__credibility_preference','__logical_network_element','__network_instance','__topology',) + + _yang_name = 'information-source-state' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-state'] + + def _get_credibility_preference(self): + """ + Getter method for credibility_preference, mapped from YANG variable /networks/network/link/te/information_source_state/credibility_preference (uint16) + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + return self.__credibility_preference + + def _set_credibility_preference(self, v, load=False): + """ + Setter method for credibility_preference, mapped from YANG variable /networks/network/link/te/information_source_state/credibility_preference (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_credibility_preference is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_credibility_preference() directly. + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """credibility_preference must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__credibility_preference = t + if hasattr(self, '_set'): + self._set() + + def _unset_credibility_preference(self): + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + + + def _get_logical_network_element(self): + """ + Getter method for logical_network_element, mapped from YANG variable /networks/network/link/te/information_source_state/logical_network_element (string) + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + return self.__logical_network_element + + def _set_logical_network_element(self, v, load=False): + """ + Setter method for logical_network_element, mapped from YANG variable /networks/network/link/te/information_source_state/logical_network_element (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical_network_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical_network_element() directly. + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical_network_element must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__logical_network_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical_network_element(self): + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_network_instance(self): + """ + Getter method for network_instance, mapped from YANG variable /networks/network/link/te/information_source_state/network_instance (string) + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + return self.__network_instance + + def _set_network_instance(self, v, load=False): + """ + Setter method for network_instance, mapped from YANG variable /networks/network/link/te/information_source_state/network_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_instance() directly. + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__network_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_instance(self): + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /networks/network/link/te/information_source_state/topology (container) + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /networks/network/link/te/information_source_state/topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + credibility_preference = __builtin__.property(_get_credibility_preference) + logical_network_element = __builtin__.property(_get_logical_network_element) + network_instance = __builtin__.property(_get_network_instance) + topology = __builtin__.property(_get_topology) + + + _pyangbind_elements = OrderedDict([('credibility_preference', credibility_preference), ('logical_network_element', logical_network_element), ('network_instance', network_instance), ('topology', topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/topology/__init__.py new file mode 100644 index 000000000..6a22bed59 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/information_source_state/topology/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/information-source-state/topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_ref','__network_ref',) + + _yang_name = 'topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'information-source-state', 'topology'] + + def _get_link_ref(self): + """ + Getter method for link_ref, mapped from YANG variable /networks/network/link/te/information_source_state/topology/link_ref (leafref) + + YANG Description: A type for an absolute reference to a link instance. +(This type should not be used for relative references. +In such a case, a relative path should be used instead.) + """ + return self.__link_ref + + def _set_link_ref(self, v, load=False): + """ + Setter method for link_ref, mapped from YANG variable /networks/network/link/te/information_source_state/topology/link_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_ref() directly. + + YANG Description: A type for an absolute reference to a link instance. +(This type should not be used for relative references. +In such a case, a relative path should be used instead.) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__link_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_ref(self): + self.__link_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/te/information_source_state/topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/te/information_source_state/topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + link_ref = __builtin__.property(_get_link_ref) + network_ref = __builtin__.property(_get_network_ref) + + + _pyangbind_elements = OrderedDict([('link_ref', link_ref), ('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/recovery/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/recovery/__init__.py new file mode 100644 index 000000000..441cf6d42 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/recovery/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class recovery(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/recovery. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Status of the recovery process. + """ + __slots__ = ('_path_helper', '_extmethods', '__restoration_status','__protection_status',) + + _yang_name = 'recovery' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restoration_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="restoration-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + self.__protection_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="protection-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'recovery'] + + def _get_restoration_status(self): + """ + Getter method for restoration_status, mapped from YANG variable /networks/network/link/te/recovery/restoration_status (te-types:te-recovery-status) + + YANG Description: Restoration status. + """ + return self.__restoration_status + + def _set_restoration_status(self, v, load=False): + """ + Setter method for restoration_status, mapped from YANG variable /networks/network/link/te/recovery/restoration_status (te-types:te-recovery-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_status() directly. + + YANG Description: Restoration status. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="restoration-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_status must be of a type compatible with te-types:te-recovery-status""", + 'defined-type': "te-types:te-recovery-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="restoration-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False)""", + }) + + self.__restoration_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_status(self): + self.__restoration_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="restoration-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + + + def _get_protection_status(self): + """ + Getter method for protection_status, mapped from YANG variable /networks/network/link/te/recovery/protection_status (te-types:te-recovery-status) + + YANG Description: Protection status. + """ + return self.__protection_status + + def _set_protection_status(self, v, load=False): + """ + Setter method for protection_status, mapped from YANG variable /networks/network/link/te/recovery/protection_status (te-types:te-recovery-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_status() directly. + + YANG Description: Protection status. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="protection-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_status must be of a type compatible with te-types:te-recovery-status""", + 'defined-type': "te-types:te-recovery-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="protection-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False)""", + }) + + self.__protection_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_status(self): + self.__protection_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'normal': {}, 'recovery-started': {}, 'recovery-succeeded': {}, 'recovery-failed': {}, 'reversion-started': {}, 'reversion-succeeded': {}, 'reversion-failed': {}, 'recovery-unavailable': {}, 'recovery-admin': {}, 'wait-to-restore': {}},), is_leaf=True, yang_name="protection-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-recovery-status', is_config=False) + + restoration_status = __builtin__.property(_get_restoration_status) + protection_status = __builtin__.property(_get_protection_status) + + + _pyangbind_elements = OrderedDict([('restoration_status', restoration_status), ('protection_status', protection_status), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/statistics/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/statistics/__init__.py new file mode 100644 index 000000000..cbfbda90f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/statistics/__init__.py @@ -0,0 +1,810 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class statistics(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/statistics. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Statistics data. + """ + __slots__ = ('_path_helper', '_extmethods', '__discontinuity_time','__disables','__enables','__maintenance_clears','__maintenance_sets','__modifies','__downs','__ups','__fault_clears','__fault_detects','__protection_switches','__protection_reverts','__restoration_failures','__restoration_starts','__restoration_successes','__restoration_reversion_failures','__restoration_reversion_starts','__restoration_reversion_successes',) + + _yang_name = 'statistics' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__downs = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__ups = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__fault_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__fault_detects = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-detects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__protection_switches = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-switches", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__protection_reverts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-reverts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_failures = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_starts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_successes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_reversion_failures = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_reversion_starts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__restoration_reversion_successes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'statistics'] + + def _get_discontinuity_time(self): + """ + Getter method for discontinuity_time, mapped from YANG variable /networks/network/link/te/statistics/discontinuity_time (yang:date-and-time) + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + return self.__discontinuity_time + + def _set_discontinuity_time(self, v, load=False): + """ + Setter method for discontinuity_time, mapped from YANG variable /networks/network/link/te/statistics/discontinuity_time (yang:date-and-time) + If this variable is read-only (config: false) in the + source YANG file, then _set_discontinuity_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_discontinuity_time() directly. + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """discontinuity_time must be of a type compatible with yang:date-and-time""", + 'defined-type': "yang:date-and-time", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False)""", + }) + + self.__discontinuity_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_discontinuity_time(self): + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + + + def _get_disables(self): + """ + Getter method for disables, mapped from YANG variable /networks/network/link/te/statistics/disables (yang:counter32) + + YANG Description: Number of times that a link was disabled. + """ + return self.__disables + + def _set_disables(self, v, load=False): + """ + Setter method for disables, mapped from YANG variable /networks/network/link/te/statistics/disables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_disables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disables() directly. + + YANG Description: Number of times that a link was disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__disables = t + if hasattr(self, '_set'): + self._set() + + def _unset_disables(self): + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_enables(self): + """ + Getter method for enables, mapped from YANG variable /networks/network/link/te/statistics/enables (yang:counter32) + + YANG Description: Number of times that a link was enabled. + """ + return self.__enables + + def _set_enables(self, v, load=False): + """ + Setter method for enables, mapped from YANG variable /networks/network/link/te/statistics/enables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_enables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enables() directly. + + YANG Description: Number of times that a link was enabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__enables = t + if hasattr(self, '_set'): + self._set() + + def _unset_enables(self): + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_clears(self): + """ + Getter method for maintenance_clears, mapped from YANG variable /networks/network/link/te/statistics/maintenance_clears (yang:counter32) + + YANG Description: Number of times that a link was taken out of maintenance. + """ + return self.__maintenance_clears + + def _set_maintenance_clears(self, v, load=False): + """ + Setter method for maintenance_clears, mapped from YANG variable /networks/network/link/te/statistics/maintenance_clears (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_clears is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_clears() directly. + + YANG Description: Number of times that a link was taken out of maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_clears must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_clears = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_clears(self): + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_sets(self): + """ + Getter method for maintenance_sets, mapped from YANG variable /networks/network/link/te/statistics/maintenance_sets (yang:counter32) + + YANG Description: Number of times that a link was put in maintenance. + """ + return self.__maintenance_sets + + def _set_maintenance_sets(self, v, load=False): + """ + Setter method for maintenance_sets, mapped from YANG variable /networks/network/link/te/statistics/maintenance_sets (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_sets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_sets() directly. + + YANG Description: Number of times that a link was put in maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_sets must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_sets = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_sets(self): + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_modifies(self): + """ + Getter method for modifies, mapped from YANG variable /networks/network/link/te/statistics/modifies (yang:counter32) + + YANG Description: Number of times that a link was modified. + """ + return self.__modifies + + def _set_modifies(self, v, load=False): + """ + Setter method for modifies, mapped from YANG variable /networks/network/link/te/statistics/modifies (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_modifies is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_modifies() directly. + + YANG Description: Number of times that a link was modified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """modifies must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__modifies = t + if hasattr(self, '_set'): + self._set() + + def _unset_modifies(self): + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_downs(self): + """ + Getter method for downs, mapped from YANG variable /networks/network/link/te/statistics/downs (yang:counter32) + + YANG Description: Number of times that a link was set to an operational state +of 'down'. + """ + return self.__downs + + def _set_downs(self, v, load=False): + """ + Setter method for downs, mapped from YANG variable /networks/network/link/te/statistics/downs (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_downs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_downs() directly. + + YANG Description: Number of times that a link was set to an operational state +of 'down'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """downs must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__downs = t + if hasattr(self, '_set'): + self._set() + + def _unset_downs(self): + self.__downs = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_ups(self): + """ + Getter method for ups, mapped from YANG variable /networks/network/link/te/statistics/ups (yang:counter32) + + YANG Description: Number of times that a link was set to an operational state +of 'up'. + """ + return self.__ups + + def _set_ups(self, v, load=False): + """ + Setter method for ups, mapped from YANG variable /networks/network/link/te/statistics/ups (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_ups is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ups() directly. + + YANG Description: Number of times that a link was set to an operational state +of 'up'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ups must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__ups = t + if hasattr(self, '_set'): + self._set() + + def _unset_ups(self): + self.__ups = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_fault_clears(self): + """ + Getter method for fault_clears, mapped from YANG variable /networks/network/link/te/statistics/fault_clears (yang:counter32) + + YANG Description: Number of times that a link experienced a fault-clear +event. + """ + return self.__fault_clears + + def _set_fault_clears(self, v, load=False): + """ + Setter method for fault_clears, mapped from YANG variable /networks/network/link/te/statistics/fault_clears (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_fault_clears is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fault_clears() directly. + + YANG Description: Number of times that a link experienced a fault-clear +event. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fault_clears must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__fault_clears = t + if hasattr(self, '_set'): + self._set() + + def _unset_fault_clears(self): + self.__fault_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_fault_detects(self): + """ + Getter method for fault_detects, mapped from YANG variable /networks/network/link/te/statistics/fault_detects (yang:counter32) + + YANG Description: Number of times that a link experienced fault detection. + """ + return self.__fault_detects + + def _set_fault_detects(self, v, load=False): + """ + Setter method for fault_detects, mapped from YANG variable /networks/network/link/te/statistics/fault_detects (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_fault_detects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fault_detects() directly. + + YANG Description: Number of times that a link experienced fault detection. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-detects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fault_detects must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-detects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__fault_detects = t + if hasattr(self, '_set'): + self._set() + + def _unset_fault_detects(self): + self.__fault_detects = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="fault-detects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_protection_switches(self): + """ + Getter method for protection_switches, mapped from YANG variable /networks/network/link/te/statistics/protection_switches (yang:counter32) + + YANG Description: Number of times that a link experienced protection +switchover. + """ + return self.__protection_switches + + def _set_protection_switches(self, v, load=False): + """ + Setter method for protection_switches, mapped from YANG variable /networks/network/link/te/statistics/protection_switches (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_switches is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_switches() directly. + + YANG Description: Number of times that a link experienced protection +switchover. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-switches", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_switches must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-switches", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__protection_switches = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_switches(self): + self.__protection_switches = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-switches", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_protection_reverts(self): + """ + Getter method for protection_reverts, mapped from YANG variable /networks/network/link/te/statistics/protection_reverts (yang:counter32) + + YANG Description: Number of times that a link experienced protection +reversion. + """ + return self.__protection_reverts + + def _set_protection_reverts(self, v, load=False): + """ + Setter method for protection_reverts, mapped from YANG variable /networks/network/link/te/statistics/protection_reverts (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_reverts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_reverts() directly. + + YANG Description: Number of times that a link experienced protection +reversion. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-reverts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_reverts must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-reverts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__protection_reverts = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_reverts(self): + self.__protection_reverts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="protection-reverts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_failures(self): + """ + Getter method for restoration_failures, mapped from YANG variable /networks/network/link/te/statistics/restoration_failures (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +failure. + """ + return self.__restoration_failures + + def _set_restoration_failures(self, v, load=False): + """ + Setter method for restoration_failures, mapped from YANG variable /networks/network/link/te/statistics/restoration_failures (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_failures is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_failures() directly. + + YANG Description: Number of times that a link experienced restoration +failure. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_failures must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_failures = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_failures(self): + self.__restoration_failures = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_starts(self): + """ + Getter method for restoration_starts, mapped from YANG variable /networks/network/link/te/statistics/restoration_starts (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +start. + """ + return self.__restoration_starts + + def _set_restoration_starts(self, v, load=False): + """ + Setter method for restoration_starts, mapped from YANG variable /networks/network/link/te/statistics/restoration_starts (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_starts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_starts() directly. + + YANG Description: Number of times that a link experienced restoration +start. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_starts must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_starts = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_starts(self): + self.__restoration_starts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_successes(self): + """ + Getter method for restoration_successes, mapped from YANG variable /networks/network/link/te/statistics/restoration_successes (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +success. + """ + return self.__restoration_successes + + def _set_restoration_successes(self, v, load=False): + """ + Setter method for restoration_successes, mapped from YANG variable /networks/network/link/te/statistics/restoration_successes (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_successes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_successes() directly. + + YANG Description: Number of times that a link experienced restoration +success. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_successes must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_successes = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_successes(self): + self.__restoration_successes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_reversion_failures(self): + """ + Getter method for restoration_reversion_failures, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_failures (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +reversion failure. + """ + return self.__restoration_reversion_failures + + def _set_restoration_reversion_failures(self, v, load=False): + """ + Setter method for restoration_reversion_failures, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_failures (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_reversion_failures is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_reversion_failures() directly. + + YANG Description: Number of times that a link experienced restoration +reversion failure. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_reversion_failures must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_reversion_failures = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_reversion_failures(self): + self.__restoration_reversion_failures = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-failures", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_reversion_starts(self): + """ + Getter method for restoration_reversion_starts, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_starts (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +reversion start. + """ + return self.__restoration_reversion_starts + + def _set_restoration_reversion_starts(self, v, load=False): + """ + Setter method for restoration_reversion_starts, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_starts (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_reversion_starts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_reversion_starts() directly. + + YANG Description: Number of times that a link experienced restoration +reversion start. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_reversion_starts must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_reversion_starts = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_reversion_starts(self): + self.__restoration_reversion_starts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-starts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_restoration_reversion_successes(self): + """ + Getter method for restoration_reversion_successes, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_successes (yang:counter32) + + YANG Description: Number of times that a link experienced restoration +reversion success. + """ + return self.__restoration_reversion_successes + + def _set_restoration_reversion_successes(self, v, load=False): + """ + Setter method for restoration_reversion_successes, mapped from YANG variable /networks/network/link/te/statistics/restoration_reversion_successes (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_restoration_reversion_successes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restoration_reversion_successes() directly. + + YANG Description: Number of times that a link experienced restoration +reversion success. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restoration_reversion_successes must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__restoration_reversion_successes = t + if hasattr(self, '_set'): + self._set() + + def _unset_restoration_reversion_successes(self): + self.__restoration_reversion_successes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="restoration-reversion-successes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + discontinuity_time = __builtin__.property(_get_discontinuity_time) + disables = __builtin__.property(_get_disables) + enables = __builtin__.property(_get_enables) + maintenance_clears = __builtin__.property(_get_maintenance_clears) + maintenance_sets = __builtin__.property(_get_maintenance_sets) + modifies = __builtin__.property(_get_modifies) + downs = __builtin__.property(_get_downs) + ups = __builtin__.property(_get_ups) + fault_clears = __builtin__.property(_get_fault_clears) + fault_detects = __builtin__.property(_get_fault_detects) + protection_switches = __builtin__.property(_get_protection_switches) + protection_reverts = __builtin__.property(_get_protection_reverts) + restoration_failures = __builtin__.property(_get_restoration_failures) + restoration_starts = __builtin__.property(_get_restoration_starts) + restoration_successes = __builtin__.property(_get_restoration_successes) + restoration_reversion_failures = __builtin__.property(_get_restoration_reversion_failures) + restoration_reversion_starts = __builtin__.property(_get_restoration_reversion_starts) + restoration_reversion_successes = __builtin__.property(_get_restoration_reversion_successes) + + + _pyangbind_elements = OrderedDict([('discontinuity_time', discontinuity_time), ('disables', disables), ('enables', enables), ('maintenance_clears', maintenance_clears), ('maintenance_sets', maintenance_sets), ('modifies', modifies), ('downs', downs), ('ups', ups), ('fault_clears', fault_clears), ('fault_detects', fault_detects), ('protection_switches', protection_switches), ('protection_reverts', protection_reverts), ('restoration_failures', restoration_failures), ('restoration_starts', restoration_starts), ('restoration_successes', restoration_successes), ('restoration_reversion_failures', restoration_reversion_failures), ('restoration_reversion_starts', restoration_reversion_starts), ('restoration_reversion_successes', restoration_reversion_successes), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/__init__.py new file mode 100644 index 000000000..f83e385c4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/__init__.py @@ -0,0 +1,938 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import external_domain +from . import underlay +from . import interface_switching_capability +from . import label_restrictions +from . import max_link_bandwidth +from . import max_resv_link_bandwidth +from . import unreserved_bandwidth +from . import te_srlgs +from . import te_nsrlgs +from . import otn_link +from . import client_svc +class te_link_attributes(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Link attributes in a TE topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__access_type','__external_domain','__is_abstract','__name','__underlay','__admin_status','__link_index','__administrative_group','__interface_switching_capability','__label_restrictions','__link_protection_type','__max_link_bandwidth','__max_resv_link_bandwidth','__unreserved_bandwidth','__te_default_metric','__te_delay_metric','__te_igp_metric','__te_srlgs','__te_nsrlgs','__otn_link','__client_svc',) + + _yang_name = 'te-link-attributes' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__access_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + self.__external_domain = YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__otn_link = YANGDynClass(base=otn_link.otn_link, is_container='container', yang_name="otn-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__client_svc = YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes'] + + def _get_access_type(self): + """ + Getter method for access_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/access_type (te-types:te-link-access-type) + + YANG Description: Link access type, which can be point-to-point or +multi-access. + """ + return self.__access_type + + def _set_access_type(self, v, load=False): + """ + Setter method for access_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/access_type (te-types:te-link-access-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_access_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_access_type() directly. + + YANG Description: Link access type, which can be point-to-point or +multi-access. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """access_type must be of a type compatible with te-types:te-link-access-type""", + 'defined-type': "te-types:te-link-access-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True)""", + }) + + self.__access_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_access_type(self): + self.__access_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + + + def _get_external_domain(self): + """ + Getter method for external_domain, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain (container) + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + return self.__external_domain + + def _set_external_domain(self, v, load=False): + """ + Setter method for external_domain, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_external_domain is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_external_domain() directly. + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """external_domain must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__external_domain = t + if hasattr(self, '_set'): + self._set() + + def _unset_external_domain(self): + self.__external_domain = YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_abstract(self): + """ + Getter method for is_abstract, mapped from YANG variable /networks/network/link/te/te_link_attributes/is_abstract (empty) + + YANG Description: Present if the link is abstract. + """ + return self.__is_abstract + + def _set_is_abstract(self, v, load=False): + """ + Setter method for is_abstract, mapped from YANG variable /networks/network/link/te/te_link_attributes/is_abstract (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_abstract is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_abstract() directly. + + YANG Description: Present if the link is abstract. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_abstract must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True)""", + }) + + self.__is_abstract = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_abstract(self): + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/link/te/te_link_attributes/name (string) + + YANG Description: Link name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/link/te/te_link_attributes/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Link name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/network/link/te/te_link_attributes/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the link. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/network/link/te/te_link_attributes/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_link_index(self): + """ + Getter method for link_index, mapped from YANG variable /networks/network/link/te/te_link_attributes/link_index (uint64) + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + return self.__link_index + + def _set_link_index(self, v, load=False): + """ + Setter method for link_index, mapped from YANG variable /networks/network/link/te/te_link_attributes/link_index (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_index() directly. + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_index must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__link_index = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_index(self): + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + + def _get_administrative_group(self): + """ + Getter method for administrative_group, mapped from YANG variable /networks/network/link/te/te_link_attributes/administrative_group (te-types:admin-groups) + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + return self.__administrative_group + + def _set_administrative_group(self, v, load=False): + """ + Setter method for administrative_group, mapped from YANG variable /networks/network/link/te/te_link_attributes/administrative_group (te-types:admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_administrative_group is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_administrative_group() directly. + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """administrative_group must be of a type compatible with te-types:admin-groups""", + 'defined-type': "te-types:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True)""", + }) + + self.__administrative_group = t + if hasattr(self, '_set'): + self._set() + + def _unset_administrative_group(self): + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + + + def _get_interface_switching_capability(self): + """ + Getter method for interface_switching_capability, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability (list) + + YANG Description: List of ISCDs for this link. + """ + return self.__interface_switching_capability + + def _set_interface_switching_capability(self, v, load=False): + """ + Setter method for interface_switching_capability, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_interface_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interface_switching_capability() directly. + + YANG Description: List of ISCDs for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interface_switching_capability must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__interface_switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_interface_switching_capability(self): + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection_type(self): + """ + Getter method for link_protection_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/link_protection_type (identityref) + + YANG Description: Link Protection Type desired for this link. + """ + return self.__link_protection_type + + def _set_link_protection_type(self, v, load=False): + """ + Setter method for link_protection_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/link_protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection_type() directly. + + YANG Description: Link Protection Type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection_type(self): + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_max_link_bandwidth(self): + """ + Getter method for max_link_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth (container) + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + return self.__max_link_bandwidth + + def _set_max_link_bandwidth(self, v, load=False): + """ + Setter method for max_link_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_link_bandwidth() directly. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__max_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_link_bandwidth(self): + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_max_resv_link_bandwidth(self): + """ + Getter method for max_resv_link_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth (container) + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + return self.__max_resv_link_bandwidth + + def _set_max_resv_link_bandwidth(self, v, load=False): + """ + Setter method for max_resv_link_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_resv_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_resv_link_bandwidth() directly. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_resv_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__max_resv_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_resv_link_bandwidth(self): + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unreserved_bandwidth(self): + """ + Getter method for unreserved_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth (list) + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + return self.__unreserved_bandwidth + + def _set_unreserved_bandwidth(self, v, load=False): + """ + Setter method for unreserved_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_unreserved_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unreserved_bandwidth() directly. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unreserved_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__unreserved_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_unreserved_bandwidth(self): + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_te_default_metric(self): + """ + Getter method for te_default_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_default_metric (uint32) + + YANG Description: Traffic Engineering metric. + """ + return self.__te_default_metric + + def _set_te_default_metric(self, v, load=False): + """ + Setter method for te_default_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_default_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_default_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_default_metric() directly. + + YANG Description: Traffic Engineering metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_default_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_default_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_default_metric(self): + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_delay_metric(self): + """ + Getter method for te_delay_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_delay_metric (uint32) + + YANG Description: Traffic Engineering delay metric. + """ + return self.__te_delay_metric + + def _set_te_delay_metric(self, v, load=False): + """ + Setter method for te_delay_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_delay_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_delay_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_delay_metric() directly. + + YANG Description: Traffic Engineering delay metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_delay_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_delay_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_delay_metric(self): + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_igp_metric(self): + """ + Getter method for te_igp_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_igp_metric (uint32) + + YANG Description: IGP metric used for Traffic Engineering. + """ + return self.__te_igp_metric + + def _set_te_igp_metric(self, v, load=False): + """ + Setter method for te_igp_metric, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_igp_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_igp_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_igp_metric() directly. + + YANG Description: IGP metric used for Traffic Engineering. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_igp_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_igp_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_igp_metric(self): + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_srlgs(self): + """ + Getter method for te_srlgs, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_srlgs (container) + + YANG Description: Contains a list of SRLGs. + """ + return self.__te_srlgs + + def _set_te_srlgs(self, v, load=False): + """ + Setter method for te_srlgs, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_srlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_srlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_srlgs() directly. + + YANG Description: Contains a list of SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_srlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_srlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_srlgs(self): + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_te_nsrlgs(self): + """ + Getter method for te_nsrlgs, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_nsrlgs (container) + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + return self.__te_nsrlgs + + def _set_te_nsrlgs(self, v, load=False): + """ + Setter method for te_nsrlgs, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_nsrlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_nsrlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_nsrlgs() directly. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_nsrlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_nsrlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_nsrlgs(self): + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_otn_link(self): + """ + Getter method for otn_link, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link (container) + + YANG Description: Attributes of the OTN Link. + """ + return self.__otn_link + + def _set_otn_link(self, v, load=False): + """ + Setter method for otn_link, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_link() directly. + + YANG Description: Attributes of the OTN Link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_link.otn_link, is_container='container', yang_name="otn-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_link must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_link.otn_link, is_container='container', yang_name="otn-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_link = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_link(self): + self.__otn_link = YANGDynClass(base=otn_link.otn_link, is_container='container', yang_name="otn-link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_client_svc(self): + """ + Getter method for client_svc, mapped from YANG variable /networks/network/link/te/te_link_attributes/client_svc (container) + + YANG Description: Attributes of the Link supporting CBR client signals. + """ + return self.__client_svc + + def _set_client_svc(self, v, load=False): + """ + Setter method for client_svc, mapped from YANG variable /networks/network/link/te/te_link_attributes/client_svc (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_client_svc is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_client_svc() directly. + + YANG Description: Attributes of the Link supporting CBR client signals. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """client_svc must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__client_svc = t + if hasattr(self, '_set'): + self._set() + + def _unset_client_svc(self): + self.__client_svc = YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + access_type = __builtin__.property(_get_access_type, _set_access_type) + external_domain = __builtin__.property(_get_external_domain, _set_external_domain) + is_abstract = __builtin__.property(_get_is_abstract, _set_is_abstract) + name = __builtin__.property(_get_name, _set_name) + underlay = __builtin__.property(_get_underlay, _set_underlay) + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + link_index = __builtin__.property(_get_link_index, _set_link_index) + administrative_group = __builtin__.property(_get_administrative_group, _set_administrative_group) + interface_switching_capability = __builtin__.property(_get_interface_switching_capability, _set_interface_switching_capability) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + link_protection_type = __builtin__.property(_get_link_protection_type, _set_link_protection_type) + max_link_bandwidth = __builtin__.property(_get_max_link_bandwidth, _set_max_link_bandwidth) + max_resv_link_bandwidth = __builtin__.property(_get_max_resv_link_bandwidth, _set_max_resv_link_bandwidth) + unreserved_bandwidth = __builtin__.property(_get_unreserved_bandwidth, _set_unreserved_bandwidth) + te_default_metric = __builtin__.property(_get_te_default_metric, _set_te_default_metric) + te_delay_metric = __builtin__.property(_get_te_delay_metric, _set_te_delay_metric) + te_igp_metric = __builtin__.property(_get_te_igp_metric, _set_te_igp_metric) + te_srlgs = __builtin__.property(_get_te_srlgs, _set_te_srlgs) + te_nsrlgs = __builtin__.property(_get_te_nsrlgs, _set_te_nsrlgs) + otn_link = __builtin__.property(_get_otn_link, _set_otn_link) + client_svc = __builtin__.property(_get_client_svc, _set_client_svc) + + + _pyangbind_elements = OrderedDict([('access_type', access_type), ('external_domain', external_domain), ('is_abstract', is_abstract), ('name', name), ('underlay', underlay), ('admin_status', admin_status), ('link_index', link_index), ('administrative_group', administrative_group), ('interface_switching_capability', interface_switching_capability), ('label_restrictions', label_restrictions), ('link_protection_type', link_protection_type), ('max_link_bandwidth', max_link_bandwidth), ('max_resv_link_bandwidth', max_resv_link_bandwidth), ('unreserved_bandwidth', unreserved_bandwidth), ('te_default_metric', te_default_metric), ('te_delay_metric', te_delay_metric), ('te_igp_metric', te_igp_metric), ('te_srlgs', te_srlgs), ('te_nsrlgs', te_nsrlgs), ('otn_link', otn_link), ('client_svc', client_svc), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/client_svc/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/client_svc/__init__.py new file mode 100644 index 000000000..69ba52bbc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/client_svc/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class client_svc(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/client-svc. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the Link supporting CBR client signals. + """ + __slots__ = ('_path_helper', '_extmethods', '__supported_client_signal',) + + _yang_name = 'client-svc' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__supported_client_signal = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'client-svc'] + + def _get_supported_client_signal(self): + """ + Getter method for supported_client_signal, mapped from YANG variable /networks/network/link/te/te_link_attributes/client_svc/supported_client_signal (identityref) + + YANG Description: List of client signal types supported by the Link. + """ + return self.__supported_client_signal + + def _set_supported_client_signal(self, v, load=False): + """ + Setter method for supported_client_signal, mapped from YANG variable /networks/network/link/te/te_link_attributes/client_svc/supported_client_signal (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_client_signal is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_client_signal() directly. + + YANG Description: List of client signal types supported by the Link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_client_signal must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__supported_client_signal = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_client_signal(self): + self.__supported_client_signal = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + supported_client_signal = __builtin__.property(_get_supported_client_signal, _set_supported_client_signal) + + + _pyangbind_elements = OrderedDict([('supported_client_signal', supported_client_signal), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/external_domain/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/external_domain/__init__.py new file mode 100644 index 000000000..adc0d23fb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/external_domain/__init__.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class external_domain(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/external-domain. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__remote_te_node_id','__remote_te_link_tp_id',) + + _yang_name = 'external-domain' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__remote_te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + self.__remote_te_link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'external-domain'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_remote_te_node_id(self): + """ + Getter method for remote_te_node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/remote_te_node_id (te-types:te-node-id) + + YANG Description: Remote TE node identifier, used together with +'remote-te-link-tp-id' to identify the remote Link +Termination Point (LTP) in a different domain. + """ + return self.__remote_te_node_id + + def _set_remote_te_node_id(self, v, load=False): + """ + Setter method for remote_te_node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/remote_te_node_id (te-types:te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_remote_te_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_remote_te_node_id() directly. + + YANG Description: Remote TE node identifier, used together with +'remote-te-link-tp-id' to identify the remote Link +Termination Point (LTP) in a different domain. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """remote_te_node_id must be of a type compatible with te-types:te-node-id""", + 'defined-type': "te-types:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True)""", + }) + + self.__remote_te_node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_remote_te_node_id(self): + self.__remote_te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + + + def _get_remote_te_link_tp_id(self): + """ + Getter method for remote_te_link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/remote_te_link_tp_id (te-types:te-tp-id) + + YANG Description: Remote TE LTP identifier, used together with +'remote-te-node-id' to identify the remote LTP in a +different domain. + """ + return self.__remote_te_link_tp_id + + def _set_remote_te_link_tp_id(self, v, load=False): + """ + Setter method for remote_te_link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/external_domain/remote_te_link_tp_id (te-types:te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_remote_te_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_remote_te_link_tp_id() directly. + + YANG Description: Remote TE LTP identifier, used together with +'remote-te-node-id' to identify the remote LTP in a +different domain. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """remote_te_link_tp_id must be of a type compatible with te-types:te-tp-id""", + 'defined-type': "te-types:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True)""", + }) + + self.__remote_te_link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_remote_te_link_tp_id(self): + self.__remote_te_link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + remote_te_node_id = __builtin__.property(_get_remote_te_node_id, _set_remote_te_node_id) + remote_te_link_tp_id = __builtin__.property(_get_remote_te_link_tp_id, _set_remote_te_link_tp_id) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('remote_te_node_id', remote_te_node_id), ('remote_te_link_tp_id', remote_te_link_tp_id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/__init__.py new file mode 100644 index 000000000..e999df8fd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import max_lsp_bandwidth +class interface_switching_capability(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/interface-switching-capability. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of ISCDs for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability','__encoding','__max_lsp_bandwidth',) + + _yang_name = 'interface-switching-capability' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'interface-switching-capability'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/switching_capability (identityref) + + YANG Description: Switching capability for this interface. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/encoding (identityref) + + YANG Description: Encoding supported by this interface. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_max_lsp_bandwidth(self): + """ + Getter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth (list) + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + return self.__max_lsp_bandwidth + + def _set_max_lsp_bandwidth(self, v, load=False): + """ + Setter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_lsp_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_lsp_bandwidth() directly. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_lsp_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__max_lsp_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_lsp_bandwidth(self): + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + encoding = __builtin__.property(_get_encoding, _set_encoding) + max_lsp_bandwidth = __builtin__.property(_get_max_lsp_bandwidth, _set_max_lsp_bandwidth) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ('encoding', encoding), ('max_lsp_bandwidth', max_lsp_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py new file mode 100644 index 000000000..fd066564c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_lsp_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/interface-switching-capability/max-lsp-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'max-lsp-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + priority = __builtin__.property(_get_priority, _set_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..ae1f4655b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/interface-switching-capability/max-lsp-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..714d3fac7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/interface-switching-capability/max-lsp-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__max_ts_number',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_max_ts_number(self): + """ + Getter method for max_ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + return self.__max_ts_number + + def _set_max_ts_number(self, v, load=False): + """ + Setter method for max_ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_ts_number() directly. + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__max_ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_ts_number(self): + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + max_ts_number = __builtin__.property(_get_max_ts_number, _set_max_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'max_ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('max_ts_number', max_ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/__init__.py new file mode 100644 index 000000000..f4e44b0e9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..44f081277 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..52e6a65c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..ac25e0634 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..67dde9052 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..24875829b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..65fb7f8e1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..4a68961e3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..082f89723 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..51201035a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..1325a1afd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..b59c995b2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/__init__.py new file mode 100644 index 000000000..566cf7799 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..c0e0c9a78 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..94132f930 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..53a6ab873 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/__init__.py new file mode 100644 index 000000000..33d25351b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_resv_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-resv-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-resv-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-resv-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..34072dafa --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-resv-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..971708460 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-resv-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..8ee145707 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/max-resv-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/otn_link/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/otn_link/__init__.py new file mode 100644 index 000000000..62dec2b89 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/otn_link/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/otn-link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the OTN Link. + """ + __slots__ = ('_path_helper', '_extmethods', '__odtu_flex_type','__tsg','__distance',) + + _yang_name = 'otn-link' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__distance = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="distance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'otn-link'] + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs set up +on this OTN Link. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs set up +on this OTN Link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/tsg (identityref) + + YANG Description: Tributary slot granularity. + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_distance(self): + """ + Getter method for distance, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/distance (uint32) + + YANG Description: distance in the unit of kilometers + """ + return self.__distance + + def _set_distance(self, v, load=False): + """ + Setter method for distance, mapped from YANG variable /networks/network/link/te/te_link_attributes/otn_link/distance (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_distance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_distance() directly. + + YANG Description: distance in the unit of kilometers + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="distance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """distance must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="distance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint32', is_config=True)""", + }) + + self.__distance = t + if hasattr(self, '_set'): + self._set() + + def _unset_distance(self): + self.__distance = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="distance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint32', is_config=True) + + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + distance = __builtin__.property(_get_distance, _set_distance) + + + _pyangbind_elements = OrderedDict([('odtu_flex_type', odtu_flex_type), ('tsg', tsg), ('distance', distance), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_nsrlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_nsrlgs/__init__.py new file mode 100644 index 000000000..51926d313 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_nsrlgs/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_nsrlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/te-nsrlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + __slots__ = ('_path_helper', '_extmethods', '__id',) + + _yang_name = 'te-nsrlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'te-nsrlgs'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_nsrlgs/id (uint32) + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_nsrlgs/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + id = __builtin__.property(_get_id, _set_id) + + + _pyangbind_elements = OrderedDict([('id', id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_srlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_srlgs/__init__.py new file mode 100644 index 000000000..92ac61644 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/te_srlgs/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_srlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/te-srlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__value',) + + _yang_name = 'te-srlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'te-srlgs'] + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_srlgs/value (te-types:srlg) + + YANG Description: SRLG value. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/link/te/te_link_attributes/te_srlgs/value (te-types:srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with te-types:srlg""", + 'defined-type': "te-types:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/__init__.py new file mode 100644 index 000000000..129490e77 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/__init__.py new file mode 100644 index 000000000..6e430aedb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..aca211807 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..361309573 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..b9ec35dbe --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..4e91ab131 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..fb2e02afe --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..06923495d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..246878177 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..7b040726e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/__init__.py new file mode 100644 index 000000000..2cbefb38a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..d1f9ba7c6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..be898e3aa --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..46d140192 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..3aee6e73b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..30e2c479a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..88d8af789 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..fe386ce02 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..130901543 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..6b516827d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/__init__.py new file mode 100644 index 000000000..4402db40e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..bfd6fae3f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/link/te/te_link_attributes/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/__init__.py new file mode 100644 index 000000000..64b36f07a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class unreserved_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/unreserved-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'unreserved-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'unreserved-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + priority = __builtin__.property(_get_priority, _set_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..597c65903 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/unreserved-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..602ca2e1a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/unreserved-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..94ca139a6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/te-link-attributes/unreserved-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/link/te/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/underlay/__init__.py new file mode 100644 index 000000000..f8ac511c0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/link/te/underlay/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/link/te/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: State attributes for the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__dynamic','__committed',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__dynamic = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="dynamic", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__committed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'link', 'te', 'underlay'] + + def _get_dynamic(self): + """ + Getter method for dynamic, mapped from YANG variable /networks/network/link/te/underlay/dynamic (boolean) + + YANG Description: 'true' if the underlay is dynamically created. + """ + return self.__dynamic + + def _set_dynamic(self, v, load=False): + """ + Setter method for dynamic, mapped from YANG variable /networks/network/link/te/underlay/dynamic (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_dynamic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_dynamic() directly. + + YANG Description: 'true' if the underlay is dynamically created. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="dynamic", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """dynamic must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="dynamic", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__dynamic = t + if hasattr(self, '_set'): + self._set() + + def _unset_dynamic(self): + self.__dynamic = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="dynamic", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_committed(self): + """ + Getter method for committed, mapped from YANG variable /networks/network/link/te/underlay/committed (boolean) + + YANG Description: 'true' if the underlay is committed. + """ + return self.__committed + + def _set_committed(self, v, load=False): + """ + Setter method for committed, mapped from YANG variable /networks/network/link/te/underlay/committed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_committed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_committed() directly. + + YANG Description: 'true' if the underlay is committed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """committed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__committed = t + if hasattr(self, '_set'): + self._set() + + def _unset_committed(self): + self.__committed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + dynamic = __builtin__.property(_get_dynamic) + committed = __builtin__.property(_get_committed) + + + _pyangbind_elements = OrderedDict([('dynamic', dynamic), ('committed', committed), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/__init__.py new file mode 100644 index 000000000..75d12adce --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_topology +class network_types(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/network-types. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Serves as an augmentation target. +The network type is indicated through corresponding +presence containers augmented into this container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_topology',) + + _yang_name = 'network-types' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_topology = YANGDynClass(base=te_topology.te_topology, is_container='container', yang_name="te-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'network-types'] + + def _get_te_topology(self): + """ + Getter method for te_topology, mapped from YANG variable /networks/network/network_types/te_topology (container) + + YANG Description: Its presence identifies the TE topology type. + """ + return self.__te_topology + + def _set_te_topology(self, v, load=False): + """ + Setter method for te_topology, mapped from YANG variable /networks/network/network_types/te_topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_topology() directly. + + YANG Description: Its presence identifies the TE topology type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_topology.te_topology, is_container='container', yang_name="te-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_topology.te_topology, is_container='container', yang_name="te-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_topology(self): + self.__te_topology = YANGDynClass(base=te_topology.te_topology, is_container='container', yang_name="te-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_topology = __builtin__.property(_get_te_topology, _set_te_topology) + + + _pyangbind_elements = OrderedDict([('te_topology', te_topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/te_topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/te_topology/__init__.py new file mode 100644 index 000000000..0e986049c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/network_types/te_topology/__init__.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/network-types/te-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Its presence identifies the TE topology type. + """ + _pyangbind_elements = {} + + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/__init__.py new file mode 100644 index 000000000..11a249539 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/__init__.py @@ -0,0 +1,291 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import supporting_node +from . import termination_point +from . import te +class node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The inventory of nodes of this network. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__supporting_node','__termination_point','__te_node_id','__te',) + + _yang_name = 'node' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='node-id', is_config=True) + self.__supporting_node = YANGDynClass(base=YANGListType("network_ref node_ref",supporting_node.supporting_node, yang_name="supporting-node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref', extensions=None), is_container='list', yang_name="supporting-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + self.__termination_point = YANGDynClass(base=YANGListType("tp_id",termination_point.termination_point, yang_name="termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tp-id', extensions=None), is_container='list', yang_name="termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + self.__te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/node_id (node-id) + + YANG Description: Uniquely identifies a node within the containing +network. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/node_id (node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: Uniquely identifies a node within the containing +network. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with node-id""", + 'defined-type': "ietf-network:node-id", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='node-id', is_config=True) + + + def _get_supporting_node(self): + """ + Getter method for supporting_node, mapped from YANG variable /networks/network/node/supporting_node (list) + + YANG Description: Represents another node that is in an underlay network +and that supports this node. Used to represent layering +structure. + """ + return self.__supporting_node + + def _set_supporting_node(self, v, load=False): + """ + Setter method for supporting_node, mapped from YANG variable /networks/network/node/supporting_node (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_supporting_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supporting_node() directly. + + YANG Description: Represents another node that is in an underlay network +and that supports this node. Used to represent layering +structure. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("network_ref node_ref",supporting_node.supporting_node, yang_name="supporting-node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref', extensions=None), is_container='list', yang_name="supporting-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supporting_node must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("network_ref node_ref",supporting_node.supporting_node, yang_name="supporting-node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref', extensions=None), is_container='list', yang_name="supporting-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True)""", + }) + + self.__supporting_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_supporting_node(self): + self.__supporting_node = YANGDynClass(base=YANGListType("network_ref node_ref",supporting_node.supporting_node, yang_name="supporting-node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref', extensions=None), is_container='list', yang_name="supporting-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='list', is_config=True) + + + def _get_termination_point(self): + """ + Getter method for termination_point, mapped from YANG variable /networks/network/node/termination_point (list) + + YANG Description: A termination point can terminate a link. +Depending on the type of topology, a termination point +could, for example, refer to a port or an interface. + """ + return self.__termination_point + + def _set_termination_point(self, v, load=False): + """ + Setter method for termination_point, mapped from YANG variable /networks/network/node/termination_point (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_termination_point is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_termination_point() directly. + + YANG Description: A termination point can terminate a link. +Depending on the type of topology, a termination point +could, for example, refer to a port or an interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tp_id",termination_point.termination_point, yang_name="termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tp-id', extensions=None), is_container='list', yang_name="termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """termination_point must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tp_id",termination_point.termination_point, yang_name="termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tp-id', extensions=None), is_container='list', yang_name="termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True)""", + }) + + self.__termination_point = t + if hasattr(self, '_set'): + self._set() + + def _unset_termination_point(self): + self.__termination_point = YANGDynClass(base=YANGListType("tp_id",termination_point.termination_point, yang_name="termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tp-id', extensions=None), is_container='list', yang_name="termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + + + def _get_te_node_id(self): + """ + Getter method for te_node_id, mapped from YANG variable /networks/network/node/te_node_id (te-types:te-node-id) + + YANG Description: The identifier of a node in the TE topology. +A node is specific to a topology to which it belongs. + """ + return self.__te_node_id + + def _set_te_node_id(self, v, load=False): + """ + Setter method for te_node_id, mapped from YANG variable /networks/network/node/te_node_id (te-types:te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. +A node is specific to a topology to which it belongs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_node_id must be of a type compatible with te-types:te-node-id""", + 'defined-type': "te-types:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True)""", + }) + + self.__te_node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_node_id(self): + self.__te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + + + def _get_te(self): + """ + Getter method for te, mapped from YANG variable /networks/network/node/te (container) + + YANG Description: Indicates TE support. + """ + return self.__te + + def _set_te(self, v, load=False): + """ + Setter method for te, mapped from YANG variable /networks/network/node/te (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te() directly. + + YANG Description: Indicates TE support. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te = t + if hasattr(self, '_set'): + self._set() + + def _unset_te(self): + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + supporting_node = __builtin__.property(_get_supporting_node, _set_supporting_node) + termination_point = __builtin__.property(_get_termination_point, _set_termination_point) + te_node_id = __builtin__.property(_get_te_node_id, _set_te_node_id) + te = __builtin__.property(_get_te, _set_te) + + + _pyangbind_elements = OrderedDict([('node_id', node_id), ('supporting_node', supporting_node), ('termination_point', termination_point), ('te_node_id', te_node_id), ('te', te), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/supporting_node/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/supporting_node/__init__.py new file mode 100644 index 000000000..c4cd2fc8e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/supporting_node/__init__.py @@ -0,0 +1,168 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class supporting_node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/supporting-node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Represents another node that is in an underlay network +and that supports this node. Used to represent layering +structure. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__node_ref',) + + _yang_name = 'supporting-node' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'supporting-node'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/supporting_node/network_ref (leafref) + + YANG Description: References the underlay network of which the +underlay node is a part. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/supporting_node/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: References the underlay network of which the +underlay node is a part. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + + + def _get_node_ref(self): + """ + Getter method for node_ref, mapped from YANG variable /networks/network/node/supporting_node/node_ref (leafref) + + YANG Description: References the underlay node itself. + """ + return self.__node_ref + + def _set_node_ref(self, v, load=False): + """ + Setter method for node_ref, mapped from YANG variable /networks/network/node/supporting_node/node_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_ref() directly. + + YANG Description: References the underlay node itself. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True)""", + }) + + self.__node_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_ref(self): + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + node_ref = __builtin__.property(_get_node_ref, _set_node_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('node_ref', node_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/__init__.py new file mode 100644 index 000000000..90adef961 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/__init__.py @@ -0,0 +1,519 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_node_attributes +from . import geolocation +from . import information_source_state +from . import information_source_entry +from . import statistics +from . import tunnel_termination_point +class te(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates TE support. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_node_template','__te_node_attributes','__oper_status','__geolocation','__is_multi_access_dr','__information_source','__information_source_instance','__information_source_state','__information_source_entry','__statistics','__tunnel_termination_point',) + + _yang_name = 'te' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_node_template = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__te_node_attributes = YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__is_multi_access_dr = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-multi-access-dr", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__information_source_entry = YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__tunnel_termination_point = YANGDynClass(base=YANGListType("tunnel_tp_id",tunnel_termination_point.tunnel_termination_point, yang_name="tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-tp-id', extensions=None), is_container='list', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te'] + + def _get_te_node_template(self): + """ + Getter method for te_node_template, mapped from YANG variable /networks/network/node/te/te_node_template (leafref) + + YANG Description: The reference to a TE node template. + """ + return self.__te_node_template + + def _set_te_node_template(self, v, load=False): + """ + Setter method for te_node_template, mapped from YANG variable /networks/network/node/te/te_node_template (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_node_template is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_node_template() directly. + + YANG Description: The reference to a TE node template. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_node_template must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__te_node_template = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_node_template(self): + self.__te_node_template = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="te-node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_te_node_attributes(self): + """ + Getter method for te_node_attributes, mapped from YANG variable /networks/network/node/te/te_node_attributes (container) + + YANG Description: Contains node attributes in a TE topology. + """ + return self.__te_node_attributes + + def _set_te_node_attributes(self, v, load=False): + """ + Setter method for te_node_attributes, mapped from YANG variable /networks/network/node/te/te_node_attributes (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_node_attributes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_node_attributes() directly. + + YANG Description: Contains node attributes in a TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_node_attributes must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_node_attributes = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_node_attributes(self): + self.__te_node_attributes = YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /networks/network/node/te/oper_status (te-types:te-oper-status) + + YANG Description: The current operational state of the node. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /networks/network/node/te/oper_status (te-types:te-oper-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with te-types:te-oper-status""", + 'defined-type': "te-types:te-oper-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + + + def _get_geolocation(self): + """ + Getter method for geolocation, mapped from YANG variable /networks/network/node/te/geolocation (container) + + YANG Description: Contains a GPS location. + """ + return self.__geolocation + + def _set_geolocation(self, v, load=False): + """ + Setter method for geolocation, mapped from YANG variable /networks/network/node/te/geolocation (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_geolocation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_geolocation() directly. + + YANG Description: Contains a GPS location. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """geolocation must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__geolocation = t + if hasattr(self, '_set'): + self._set() + + def _unset_geolocation(self): + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_is_multi_access_dr(self): + """ + Getter method for is_multi_access_dr, mapped from YANG variable /networks/network/node/te/is_multi_access_dr (empty) + + YANG Description: The presence of this attribute indicates that this TE node +is a pseudonode elected as a designated router. + """ + return self.__is_multi_access_dr + + def _set_is_multi_access_dr(self, v, load=False): + """ + Setter method for is_multi_access_dr, mapped from YANG variable /networks/network/node/te/is_multi_access_dr (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_multi_access_dr is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_multi_access_dr() directly. + + YANG Description: The presence of this attribute indicates that this TE node +is a pseudonode elected as a designated router. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-multi-access-dr", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_multi_access_dr must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-multi-access-dr", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False)""", + }) + + self.__is_multi_access_dr = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_multi_access_dr(self): + self.__is_multi_access_dr = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-multi-access-dr", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + + + def _get_information_source(self): + """ + Getter method for information_source, mapped from YANG variable /networks/network/node/te/information_source (te-info-source) + + YANG Description: Indicates the type of information source. + """ + return self.__information_source + + def _set_information_source(self, v, load=False): + """ + Setter method for information_source, mapped from YANG variable /networks/network/node/te/information_source (te-info-source) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source() directly. + + YANG Description: Indicates the type of information source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source must be of a type compatible with te-info-source""", + 'defined-type': "ietf-te-topology:te-info-source", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False)""", + }) + + self.__information_source = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source(self): + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + + + def _get_information_source_instance(self): + """ + Getter method for information_source_instance, mapped from YANG variable /networks/network/node/te/information_source_instance (string) + + YANG Description: The name indicating the instance of the information +source. + """ + return self.__information_source_instance + + def _set_information_source_instance(self, v, load=False): + """ + Setter method for information_source_instance, mapped from YANG variable /networks/network/node/te/information_source_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_instance() directly. + + YANG Description: The name indicating the instance of the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__information_source_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_instance(self): + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_information_source_state(self): + """ + Getter method for information_source_state, mapped from YANG variable /networks/network/node/te/information_source_state (container) + + YANG Description: Contains state attributes related to the information +source. + """ + return self.__information_source_state + + def _set_information_source_state(self, v, load=False): + """ + Setter method for information_source_state, mapped from YANG variable /networks/network/node/te/information_source_state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_state() directly. + + YANG Description: Contains state attributes related to the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__information_source_state = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_state(self): + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_information_source_entry(self): + """ + Getter method for information_source_entry, mapped from YANG variable /networks/network/node/te/information_source_entry (list) + + YANG Description: A list of information sources learned, including the source +that is used. + """ + return self.__information_source_entry + + def _set_information_source_entry(self, v, load=False): + """ + Setter method for information_source_entry, mapped from YANG variable /networks/network/node/te/information_source_entry (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_entry is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_entry() directly. + + YANG Description: A list of information sources learned, including the source +that is used. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_entry must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__information_source_entry = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_entry(self): + self.__information_source_entry = YANGDynClass(base=YANGListType("information_source information_source_instance",information_source_entry.information_source_entry, yang_name="information-source-entry", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='information-source information-source-instance', extensions=None), is_container='list', yang_name="information-source-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_statistics(self): + """ + Getter method for statistics, mapped from YANG variable /networks/network/node/te/statistics (container) + + YANG Description: Statistics data. + """ + return self.__statistics + + def _set_statistics(self, v, load=False): + """ + Setter method for statistics, mapped from YANG variable /networks/network/node/te/statistics (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_statistics is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_statistics() directly. + + YANG Description: Statistics data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """statistics must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__statistics = t + if hasattr(self, '_set'): + self._set() + + def _unset_statistics(self): + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_tunnel_termination_point(self): + """ + Getter method for tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point (list) + + YANG Description: A termination point can terminate a tunnel. + """ + return self.__tunnel_termination_point + + def _set_tunnel_termination_point(self, v, load=False): + """ + Setter method for tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_point is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_point() directly. + + YANG Description: A termination point can terminate a tunnel. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_tp_id",tunnel_termination_point.tunnel_termination_point, yang_name="tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-tp-id', extensions=None), is_container='list', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_point must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_tp_id",tunnel_termination_point.tunnel_termination_point, yang_name="tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-tp-id', extensions=None), is_container='list', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel_termination_point = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_point(self): + self.__tunnel_termination_point = YANGDynClass(base=YANGListType("tunnel_tp_id",tunnel_termination_point.tunnel_termination_point, yang_name="tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-tp-id', extensions=None), is_container='list', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + te_node_template = __builtin__.property(_get_te_node_template, _set_te_node_template) + te_node_attributes = __builtin__.property(_get_te_node_attributes, _set_te_node_attributes) + oper_status = __builtin__.property(_get_oper_status) + geolocation = __builtin__.property(_get_geolocation) + is_multi_access_dr = __builtin__.property(_get_is_multi_access_dr) + information_source = __builtin__.property(_get_information_source) + information_source_instance = __builtin__.property(_get_information_source_instance) + information_source_state = __builtin__.property(_get_information_source_state) + information_source_entry = __builtin__.property(_get_information_source_entry) + statistics = __builtin__.property(_get_statistics) + tunnel_termination_point = __builtin__.property(_get_tunnel_termination_point, _set_tunnel_termination_point) + + + _pyangbind_elements = OrderedDict([('te_node_template', te_node_template), ('te_node_attributes', te_node_attributes), ('oper_status', oper_status), ('geolocation', geolocation), ('is_multi_access_dr', is_multi_access_dr), ('information_source', information_source), ('information_source_instance', information_source_instance), ('information_source_state', information_source_state), ('information_source_entry', information_source_entry), ('statistics', statistics), ('tunnel_termination_point', tunnel_termination_point), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/geolocation/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/geolocation/__init__.py new file mode 100644 index 000000000..f9e405188 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/geolocation/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class geolocation(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/geolocation. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a GPS location. + """ + __slots__ = ('_path_helper', '_extmethods', '__altitude','__latitude','__longitude',) + + _yang_name = 'geolocation' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'geolocation'] + + def _get_altitude(self): + """ + Getter method for altitude, mapped from YANG variable /networks/network/node/te/geolocation/altitude (int64) + + YANG Description: Distance above sea level. + """ + return self.__altitude + + def _set_altitude(self, v, load=False): + """ + Setter method for altitude, mapped from YANG variable /networks/network/node/te/geolocation/altitude (int64) + If this variable is read-only (config: false) in the + source YANG file, then _set_altitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_altitude() directly. + + YANG Description: Distance above sea level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """altitude must be of a type compatible with int64""", + 'defined-type': "int64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False)""", + }) + + self.__altitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_altitude(self): + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + + + def _get_latitude(self): + """ + Getter method for latitude, mapped from YANG variable /networks/network/node/te/geolocation/latitude (geographic-coordinate-degree) + + YANG Description: Relative position north or south on the Earth's surface. + """ + return self.__latitude + + def _set_latitude(self, v, load=False): + """ + Setter method for latitude, mapped from YANG variable /networks/network/node/te/geolocation/latitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_latitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_latitude() directly. + + YANG Description: Relative position north or south on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """latitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__latitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_latitude(self): + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + + def _get_longitude(self): + """ + Getter method for longitude, mapped from YANG variable /networks/network/node/te/geolocation/longitude (geographic-coordinate-degree) + + YANG Description: Angular distance east or west on the Earth's surface. + """ + return self.__longitude + + def _set_longitude(self, v, load=False): + """ + Setter method for longitude, mapped from YANG variable /networks/network/node/te/geolocation/longitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_longitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_longitude() directly. + + YANG Description: Angular distance east or west on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """longitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__longitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_longitude(self): + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + altitude = __builtin__.property(_get_altitude) + latitude = __builtin__.property(_get_latitude) + longitude = __builtin__.property(_get_longitude) + + + _pyangbind_elements = OrderedDict([('altitude', altitude), ('latitude', latitude), ('longitude', longitude), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/__init__.py new file mode 100644 index 000000000..5e51769ff --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/__init__.py @@ -0,0 +1,451 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import information_source_state +from . import connectivity_matrices +from . import underlay_topology +class information_source_entry(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of information sources learned, including the source +that is used. + """ + __slots__ = ('_path_helper', '_extmethods', '__information_source','__information_source_instance','__information_source_state','__connectivity_matrices','__domain_id','__is_abstract','__name','__signaling_address','__underlay_topology',) + + _yang_name = 'information-source-entry' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__connectivity_matrices = YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=False) + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry'] + + def _get_information_source(self): + """ + Getter method for information_source, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source (te-info-source) + + YANG Description: Indicates the type of information source. + """ + return self.__information_source + + def _set_information_source(self, v, load=False): + """ + Setter method for information_source, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source (te-info-source) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source() directly. + + YANG Description: Indicates the type of information source. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source must be of a type compatible with te-info-source""", + 'defined-type': "ietf-te-topology:te-info-source", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False)""", + }) + + self.__information_source = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source(self): + self.__information_source = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'unknown': {}, 'locally-configured': {}, 'ospfv2': {}, 'ospfv3': {}, 'isis': {}, 'bgp-ls': {}, 'system-processed': {}, 'other': {}},), is_leaf=True, yang_name="information-source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-info-source', is_config=False) + + + def _get_information_source_instance(self): + """ + Getter method for information_source_instance, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_instance (string) + + YANG Description: The name indicating the instance of the information +source. + """ + return self.__information_source_instance + + def _set_information_source_instance(self, v, load=False): + """ + Setter method for information_source_instance, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_instance() directly. + + YANG Description: The name indicating the instance of the information +source. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__information_source_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_instance(self): + self.__information_source_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="information-source-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_information_source_state(self): + """ + Getter method for information_source_state, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state (container) + + YANG Description: Contains state attributes related to the information +source. + """ + return self.__information_source_state + + def _set_information_source_state(self, v, load=False): + """ + Setter method for information_source_state, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_information_source_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_information_source_state() directly. + + YANG Description: Contains state attributes related to the information +source. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """information_source_state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__information_source_state = t + if hasattr(self, '_set'): + self._set() + + def _unset_information_source_state(self): + self.__information_source_state = YANGDynClass(base=information_source_state.information_source_state, is_container='container', yang_name="information-source-state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_connectivity_matrices(self): + """ + Getter method for connectivity_matrices, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices (container) + + YANG Description: Contains a connectivity matrix on a TE node. + """ + return self.__connectivity_matrices + + def _set_connectivity_matrices(self, v, load=False): + """ + Setter method for connectivity_matrices, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_connectivity_matrices is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connectivity_matrices() directly. + + YANG Description: Contains a connectivity matrix on a TE node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connectivity_matrices must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__connectivity_matrices = t + if hasattr(self, '_set'): + self._set() + + def _unset_connectivity_matrices(self): + self.__connectivity_matrices = YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_domain_id(self): + """ + Getter method for domain_id, mapped from YANG variable /networks/network/node/te/information_source_entry/domain_id (uint32) + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + return self.__domain_id + + def _set_domain_id(self, v, load=False): + """ + Setter method for domain_id, mapped from YANG variable /networks/network/node/te/information_source_entry/domain_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_domain_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_domain_id() directly. + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """domain_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__domain_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_domain_id(self): + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_is_abstract(self): + """ + Getter method for is_abstract, mapped from YANG variable /networks/network/node/te/information_source_entry/is_abstract (empty) + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + return self.__is_abstract + + def _set_is_abstract(self, v, load=False): + """ + Setter method for is_abstract, mapped from YANG variable /networks/network/node/te/information_source_entry/is_abstract (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_abstract is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_abstract() directly. + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_abstract must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False)""", + }) + + self.__is_abstract = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_abstract(self): + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=False) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/name (string) + + YANG Description: Node name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Node name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_signaling_address(self): + """ + Getter method for signaling_address, mapped from YANG variable /networks/network/node/te/information_source_entry/signaling_address (inet:ip-address) + + YANG Description: The node's signaling address. + """ + return self.__signaling_address + + def _set_signaling_address(self, v, load=False): + """ + Setter method for signaling_address, mapped from YANG variable /networks/network/node/te/information_source_entry/signaling_address (inet:ip-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_address() directly. + + YANG Description: The node's signaling address. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_address must be of a type compatible with inet:ip-address""", + 'defined-type': "inet:ip-address", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=False)""", + }) + + self.__signaling_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_address(self): + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=False) + + + def _get_underlay_topology(self): + """ + Getter method for underlay_topology, mapped from YANG variable /networks/network/node/te/information_source_entry/underlay_topology (container) + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + return self.__underlay_topology + + def _set_underlay_topology(self, v, load=False): + """ + Setter method for underlay_topology, mapped from YANG variable /networks/network/node/te/information_source_entry/underlay_topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay_topology() directly. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay_topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__underlay_topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay_topology(self): + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + information_source = __builtin__.property(_get_information_source) + information_source_instance = __builtin__.property(_get_information_source_instance) + information_source_state = __builtin__.property(_get_information_source_state) + connectivity_matrices = __builtin__.property(_get_connectivity_matrices) + domain_id = __builtin__.property(_get_domain_id) + is_abstract = __builtin__.property(_get_is_abstract) + name = __builtin__.property(_get_name) + signaling_address = __builtin__.property(_get_signaling_address) + underlay_topology = __builtin__.property(_get_underlay_topology) + + + _pyangbind_elements = OrderedDict([('information_source', information_source), ('information_source_instance', information_source_instance), ('information_source_state', information_source_state), ('connectivity_matrices', connectivity_matrices), ('domain_id', domain_id), ('is_abstract', is_abstract), ('name', name), ('signaling_address', signaling_address), ('underlay_topology', underlay_topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/__init__.py new file mode 100644 index 000000000..a773758ba --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/__init__.py @@ -0,0 +1,412 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +from . import connectivity_matrix +class connectivity_matrices(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a connectivity matrix on a TE node. + """ + __slots__ = ('_path_helper', '_extmethods', '__number_of_entries','__label_restrictions','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties','__connectivity_matrix',) + + _yang_name = 'connectivity-matrices' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__connectivity_matrix = YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices'] + + def _get_number_of_entries(self): + """ + Getter method for number_of_entries, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/number_of_entries (uint16) + + YANG Description: The number of connectivity matrix entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + return self.__number_of_entries + + def _set_number_of_entries(self, v, load=False): + """ + Setter method for number_of_entries, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/number_of_entries (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number_of_entries is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number_of_entries() directly. + + YANG Description: The number of connectivity matrix entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number_of_entries must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number_of_entries = t + if hasattr(self, '_set'): + self._set() + + def _unset_number_of_entries(self): + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_connectivity_matrix(self): + """ + Getter method for connectivity_matrix, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix (list) + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + return self.__connectivity_matrix + + def _set_connectivity_matrix(self, v, load=False): + """ + Setter method for connectivity_matrix, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_connectivity_matrix is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connectivity_matrix() directly. + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connectivity_matrix must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__connectivity_matrix = t + if hasattr(self, '_set'): + self._set() + + def _unset_connectivity_matrix(self): + self.__connectivity_matrix = YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + number_of_entries = __builtin__.property(_get_number_of_entries) + label_restrictions = __builtin__.property(_get_label_restrictions) + is_allowed = __builtin__.property(_get_is_allowed) + underlay = __builtin__.property(_get_underlay) + path_constraints = __builtin__.property(_get_path_constraints) + optimizations = __builtin__.property(_get_optimizations) + path_properties = __builtin__.property(_get_path_properties) + connectivity_matrix = __builtin__.property(_get_connectivity_matrix) + + + _pyangbind_elements = OrderedDict([('number_of_entries', number_of_entries), ('label_restrictions', label_restrictions), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ('connectivity_matrix', connectivity_matrix), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/__init__.py new file mode 100644 index 000000000..edc6885b3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/__init__.py @@ -0,0 +1,405 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import from_ +from . import to +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +class connectivity_matrix(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + __slots__ = ('_path_helper', '_extmethods', '__id','__from_','__to','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties',) + + _yang_name = 'connectivity-matrix' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__from_ = YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__to = YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/id (uint32) + + YANG Description: Identifies the connectivity matrix entry. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: Identifies the connectivity matrix entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_from_(self): + """ + Getter method for from_, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from (container) + + YANG Description: Reference to a source LTP. + """ + return self.__from_ + + def _set_from_(self, v, load=False): + """ + Setter method for from_, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_from_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_from_() directly. + + YANG Description: Reference to a source LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """from_ must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__from_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_from_(self): + self.__from_ = YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_to(self): + """ + Getter method for to, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to (container) + + YANG Description: Reference to a destination LTP. + """ + return self.__to + + def _set_to(self, v, load=False): + """ + Setter method for to, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_to is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_to() directly. + + YANG Description: Reference to a destination LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """to must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__to = t + if hasattr(self, '_set'): + self._set() + + def _unset_to(self): + self.__to = YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + id = __builtin__.property(_get_id) + from_ = __builtin__.property(_get_from_) + to = __builtin__.property(_get_to) + is_allowed = __builtin__.property(_get_is_allowed) + underlay = __builtin__.property(_get_underlay) + path_constraints = __builtin__.property(_get_path_constraints) + optimizations = __builtin__.property(_get_optimizations) + path_properties = __builtin__.property(_get_path_properties) + + + _pyangbind_elements = OrderedDict([('id', id), ('from_', from_), ('to', to), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/__init__.py new file mode 100644 index 000000000..8769c9ff8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/__init__.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +class from_(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Reference to a source LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__tp_ref','__label_restrictions',) + + _yang_name = 'from' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from'] + + def _get_tp_ref(self): + """ + Getter method for tp_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/tp_ref (leafref) + + YANG Description: Relative reference to a termination point. + """ + return self.__tp_ref + + def _set_tp_ref(self, v, load=False): + """ + Setter method for tp_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_ref() directly. + + YANG Description: Relative reference to a termination point. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_ref(self): + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + tp_ref = __builtin__.property(_get_tp_ref) + label_restrictions = __builtin__.property(_get_label_restrictions) + + + _pyangbind_elements = OrderedDict([('tp_ref', tp_ref), ('label_restrictions', label_restrictions), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py new file mode 100644 index 000000000..90df40ae3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + label_restriction = __builtin__.property(_get_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..325db1710 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + restriction = __builtin__.property(_get_restriction) + index = __builtin__.property(_get_index) + label_start = __builtin__.property(_get_label_start) + label_end = __builtin__.property(_get_label_end) + label_step = __builtin__.property(_get_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..ccc0a8bf9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + tag_type = __builtin__.property(_get_tag_type) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..8116db8f3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..7d689d60a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..3dbff3b16 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..c682b45e5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..3d28ae831 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..458413ca8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..817c68ae2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_step = __builtin__.property(_get_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..715687de9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..82fc8d6a1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + range_type = __builtin__.property(_get_range_type) + tsg = __builtin__.property(_get_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/__init__.py new file mode 100644 index 000000000..ff0a5fab9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + optimization_metric = __builtin__.property(_get_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers) + objective_function = __builtin__.property(_get_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..a9fdbbbf6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + objective_function_type = __builtin__.property(_get_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..74c142e28 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + weight = __builtin__.property(_get_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..ed88eea05 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..ad5bff3e1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + srlg = __builtin__.property(_get_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..40a38d18d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..d86889be2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..b404a2341 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..fbabbb174 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..4a9ce25d0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..81ae5ee3b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..ba86eb284 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + srlg = __builtin__.property(_get_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..edb8b9e25 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..21986a912 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + route_object_include_object = __builtin__.property(_get_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..5140272ee --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..0f65b4645 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..882e1f01a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..2dde61c31 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..784b431b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..14455045c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..70eea9f9a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..eb61c881e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..8c6d93527 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + tiebreaker = __builtin__.property(_get_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..52b5c81b7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py new file mode 100644 index 000000000..36a802786 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + + te_bandwidth = __builtin__.property(_get_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection) + setup_priority = __builtin__.property(_get_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..aec7be61a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..7a8d69da6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..ac5c598a4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..df70c3c79 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..5b69454e7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..d5df4f469 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_metric_bound = __builtin__.property(_get_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..fd7e445c0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + upper_bound = __builtin__.property(_get_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..f089523be --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..b48cb25ff --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..d18d1658d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..cee736f24 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..a079dcabf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..6b5dd7c31 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN +connectivity matrix entry. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN +connectivity matrix entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + + odulist = __builtin__.property(_get_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..afa750977 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + number = __builtin__.property(_get_number) + ts_number = __builtin__.property(_get_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/__init__.py new file mode 100644 index 000000000..f87c34494 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..5e54de272 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..df6fd94eb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..97969b437 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..47b1cb476 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..043b7900e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..46350a791 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..cd515c92f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..1161f751e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..b257ffed7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..1740e147e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..f69cf8311 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..e8b6d2f8d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..af1242f7d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..6d0602665 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..ce5442e68 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..9eeb9f3bc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..1055b900a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..796ccb5f2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..bdfa7bcab --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/__init__.py new file mode 100644 index 000000000..71191caa0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/__init__.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +class to(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Reference to a destination LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__tp_ref','__label_restrictions',) + + _yang_name = 'to' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to'] + + def _get_tp_ref(self): + """ + Getter method for tp_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/tp_ref (leafref) + + YANG Description: Relative reference to a termination point. + """ + return self.__tp_ref + + def _set_tp_ref(self, v, load=False): + """ + Setter method for tp_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_ref() directly. + + YANG Description: Relative reference to a termination point. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_ref(self): + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + tp_ref = __builtin__.property(_get_tp_ref) + label_restrictions = __builtin__.property(_get_label_restrictions) + + + _pyangbind_elements = OrderedDict([('tp_ref', tp_ref), ('label_restrictions', label_restrictions), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py new file mode 100644 index 000000000..3873a02ce --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + label_restriction = __builtin__.property(_get_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..dbf240ba8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + restriction = __builtin__.property(_get_restriction) + index = __builtin__.property(_get_index) + label_start = __builtin__.property(_get_label_start) + label_end = __builtin__.property(_get_label_end) + label_step = __builtin__.property(_get_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..3f672822b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + tag_type = __builtin__.property(_get_tag_type) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..332a60265 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..37028d9bf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..162b89624 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..334475e0d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..7c384d8f7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..612e7141b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..12f872b1f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_step = __builtin__.property(_get_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..4f53bda83 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..84ed14bf9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + range_type = __builtin__.property(_get_range_type) + tsg = __builtin__.property(_get_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/__init__.py new file mode 100644 index 000000000..0660881e2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + enabled = __builtin__.property(_get_enabled) + primary_path = __builtin__.property(_get_primary_path) + backup_path = __builtin__.property(_get_backup_path) + protection_type = __builtin__.property(_get_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py new file mode 100644 index 000000000..5e6da0327 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + index = __builtin__.property(_get_index) + network_ref = __builtin__.property(_get_network_ref) + path_element = __builtin__.property(_get_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..0e6bea889 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_element_id = __builtin__.property(_get_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..2245d0d0e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..9fc0b539a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..6ed428029 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..242d6f3f2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..f6c47d464 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..ba3dfc1f6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..b5d313c9b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py new file mode 100644 index 000000000..9efabfdc9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + network_ref = __builtin__.property(_get_network_ref) + path_element = __builtin__.property(_get_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..c680af6e0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_element_id = __builtin__.property(_get_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..33f85e528 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..6cb0c9c11 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..04bb5f8c6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..e0b0c85c5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..bc4a1ad28 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..1f6120bd5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..7f75c0107 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..fe1f4b855 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + source = __builtin__.property(_get_source) + destination = __builtin__.property(_get_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py new file mode 100644 index 000000000..0493843c7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + sharing = __builtin__.property(_get_sharing) + tunnel = __builtin__.property(_get_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..0bade4537 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/connectivity-matrix/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + tunnel_name = __builtin__.property(_get_tunnel_name) + sharing = __builtin__.property(_get_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/__init__.py new file mode 100644 index 000000000..6d7414731 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + label_restriction = __builtin__.property(_get_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..39cb5bdab --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=False) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=False) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=False) + + restriction = __builtin__.property(_get_restriction) + index = __builtin__.property(_get_index) + label_start = __builtin__.property(_get_label_start) + label_end = __builtin__.property(_get_label_end) + label_step = __builtin__.property(_get_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..5cfb573c3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=False) + + tag_type = __builtin__.property(_get_tag_type) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..8c503e2b2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..de17adeb4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..459dceb1d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..1a8e4c4dc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..1f66e6dae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..ad22f6a15 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..42085f541 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_step = __builtin__.property(_get_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..138aacf1b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=False) + + tpn = __builtin__.property(_get_tpn) + ts = __builtin__.property(_get_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..b951f71cb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=False) + + range_type = __builtin__.property(_get_range_type) + tsg = __builtin__.property(_get_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list) + priority = __builtin__.property(_get_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/__init__.py new file mode 100644 index 000000000..a561f8138 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + optimization_metric = __builtin__.property(_get_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers) + objective_function = __builtin__.property(_get_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..a5742ea30 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + objective_function_type = __builtin__.property(_get_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..de3425526 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + weight = __builtin__.property(_get_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..6df6741a9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..66415fe3b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + srlg = __builtin__.property(_get_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..267567f74 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..dfb42f946 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..22dc3125e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..687069414 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..5981ace64 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..e42736cbe --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..fcd5a3c7e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + srlg = __builtin__.property(_get_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..487e25e73 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..06b2702da --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + route_object_include_object = __builtin__.property(_get_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..0b7b9e7e8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..a30ba2c88 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..5adb8788e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..9494b4fda --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..030f51b1f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..50a4caad8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..6952ba89b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..a4ec3b3a9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..3357913dd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + tiebreaker = __builtin__.property(_get_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..4478acced --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/__init__.py new file mode 100644 index 000000000..74807897d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=False) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=False) + + te_bandwidth = __builtin__.property(_get_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection) + setup_priority = __builtin__.property(_get_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..4f42a2ac9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..cd1a2c6ed --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..a7f5be85b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..67a1ea760 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..e97d6d57e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..92e0cb519 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_metric_bound = __builtin__.property(_get_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..74b7fca4e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + upper_bound = __builtin__.property(_get_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..8c1eb4e15 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..7ee7c8def --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..20ff89122 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..e04c9a278 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..044405806 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..cf1f3bd4c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=False) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN +connectivity matrices. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN +connectivity matrices. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=False) + + odulist = __builtin__.property(_get_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..4e9960a67 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=False) + + odu_type = __builtin__.property(_get_odu_type) + number = __builtin__.property(_get_number) + ts_number = __builtin__.property(_get_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/__init__.py new file mode 100644 index 000000000..dfb5797aa --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..88aefb9b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..92f7c3235 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..9b9de5d16 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..ae1ed41e1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..73aa7bee9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..71b3184bd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..b21cd85db --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..c2331faf9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..86c07902e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..07d9666ae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..1204a2ff4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..874d8ed5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..e41be3b4c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..eb07641c0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..e8eab3fc1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..a1b457c6c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..977077b1f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..219ef7d27 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..3f83850b9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/__init__.py new file mode 100644 index 000000000..1c61ee406 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + enabled = __builtin__.property(_get_enabled) + primary_path = __builtin__.property(_get_primary_path) + backup_path = __builtin__.property(_get_backup_path) + protection_type = __builtin__.property(_get_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/__init__.py new file mode 100644 index 000000000..92cc32717 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + index = __builtin__.property(_get_index) + network_ref = __builtin__.property(_get_network_ref) + path_element = __builtin__.property(_get_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..782347073 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_element_id = __builtin__.property(_get_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..75444961d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..77ca590bd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..ecefaca5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..f9e7d7a3d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..b1433a162 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..919cb958e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..4268b0489 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/__init__.py new file mode 100644 index 000000000..6f8297c24 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + network_ref = __builtin__.property(_get_network_ref) + path_element = __builtin__.property(_get_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..0c5b869f6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_element_id = __builtin__.property(_get_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..f66d7136e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..591338404 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..5702d3150 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..7d8a5775c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..ef124eada --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..15377f86d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..b950c2358 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..f6a6987ff --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=False) + + source = __builtin__.property(_get_source) + destination = __builtin__.property(_get_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/__init__.py new file mode 100644 index 000000000..b1d6cf9df --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + sharing = __builtin__.property(_get_sharing) + tunnel = __builtin__.property(_get_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..8f8593123 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/connectivity-matrices/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'connectivity-matrices', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/information_source_entry/connectivity_matrices/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=False) + + tunnel_name = __builtin__.property(_get_tunnel_name) + sharing = __builtin__.property(_get_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/__init__.py new file mode 100644 index 000000000..1ee93c90f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/__init__.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import topology +class information_source_state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/information-source-state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains state attributes related to the information +source. + """ + __slots__ = ('_path_helper', '_extmethods', '__credibility_preference','__logical_network_element','__network_instance','__topology',) + + _yang_name = 'information-source-state' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'information-source-state'] + + def _get_credibility_preference(self): + """ + Getter method for credibility_preference, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/credibility_preference (uint16) + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + return self.__credibility_preference + + def _set_credibility_preference(self, v, load=False): + """ + Setter method for credibility_preference, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/credibility_preference (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_credibility_preference is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_credibility_preference() directly. + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """credibility_preference must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__credibility_preference = t + if hasattr(self, '_set'): + self._set() + + def _unset_credibility_preference(self): + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + + + def _get_logical_network_element(self): + """ + Getter method for logical_network_element, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/logical_network_element (string) + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + return self.__logical_network_element + + def _set_logical_network_element(self, v, load=False): + """ + Setter method for logical_network_element, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/logical_network_element (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical_network_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical_network_element() directly. + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical_network_element must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__logical_network_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical_network_element(self): + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_network_instance(self): + """ + Getter method for network_instance, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/network_instance (string) + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + return self.__network_instance + + def _set_network_instance(self, v, load=False): + """ + Setter method for network_instance, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/network_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_instance() directly. + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__network_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_instance(self): + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology (container) + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + credibility_preference = __builtin__.property(_get_credibility_preference) + logical_network_element = __builtin__.property(_get_logical_network_element) + network_instance = __builtin__.property(_get_network_instance) + topology = __builtin__.property(_get_topology) + + + _pyangbind_elements = OrderedDict([('credibility_preference', credibility_preference), ('logical_network_element', logical_network_element), ('network_instance', network_instance), ('topology', topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/topology/__init__.py new file mode 100644 index 000000000..5fc5e047b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/information_source_state/topology/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/information-source-state/topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_ref','__network_ref',) + + _yang_name = 'topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'information-source-state', 'topology'] + + def _get_node_ref(self): + """ + Getter method for node_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology/node_ref (leafref) + + YANG Description: Used to reference a node. +Nodes are identified relative to the network that +contains them. + """ + return self.__node_ref + + def _set_node_ref(self, v, load=False): + """ + Setter method for node_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology/node_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_ref() directly. + + YANG Description: Used to reference a node. +Nodes are identified relative to the network that +contains them. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__node_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_ref(self): + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/information_source_state/topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + node_ref = __builtin__.property(_get_node_ref) + network_ref = __builtin__.property(_get_network_ref) + + + _pyangbind_elements = OrderedDict([('node_ref', node_ref), ('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/underlay_topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/underlay_topology/__init__.py new file mode 100644 index 000000000..c0d77ce6f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_entry/underlay_topology/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class underlay_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-entry/underlay-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref',) + + _yang_name = 'underlay-topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-entry', 'underlay-topology'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/underlay_topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_entry/underlay_topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + network_ref = __builtin__.property(_get_network_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/__init__.py new file mode 100644 index 000000000..7767ff2b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/__init__.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import topology +class information_source_state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains state attributes related to the information +source. + """ + __slots__ = ('_path_helper', '_extmethods', '__credibility_preference','__logical_network_element','__network_instance','__topology',) + + _yang_name = 'information-source-state' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-state'] + + def _get_credibility_preference(self): + """ + Getter method for credibility_preference, mapped from YANG variable /networks/network/node/te/information_source_state/credibility_preference (uint16) + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + return self.__credibility_preference + + def _set_credibility_preference(self, v, load=False): + """ + Setter method for credibility_preference, mapped from YANG variable /networks/network/node/te/information_source_state/credibility_preference (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_credibility_preference is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_credibility_preference() directly. + + YANG Description: The preference value for calculating the Traffic +Engineering database credibility value used for +tie-break selection between different information-source +values. A higher value is preferable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """credibility_preference must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False)""", + }) + + self.__credibility_preference = t + if hasattr(self, '_set'): + self._set() + + def _unset_credibility_preference(self): + self.__credibility_preference = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="credibility-preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=False) + + + def _get_logical_network_element(self): + """ + Getter method for logical_network_element, mapped from YANG variable /networks/network/node/te/information_source_state/logical_network_element (string) + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + return self.__logical_network_element + + def _set_logical_network_element(self, v, load=False): + """ + Setter method for logical_network_element, mapped from YANG variable /networks/network/node/te/information_source_state/logical_network_element (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical_network_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical_network_element() directly. + + YANG Description: When applicable, this is the name of a logical network +element from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical_network_element must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__logical_network_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical_network_element(self): + self.__logical_network_element = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="logical-network-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_network_instance(self): + """ + Getter method for network_instance, mapped from YANG variable /networks/network/node/te/information_source_state/network_instance (string) + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + return self.__network_instance + + def _set_network_instance(self, v, load=False): + """ + Setter method for network_instance, mapped from YANG variable /networks/network/node/te/information_source_state/network_instance (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_instance is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_instance() directly. + + YANG Description: When applicable, this is the name of a network instance +from which the information is learned. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_instance must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__network_instance = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_instance(self): + self.__network_instance = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-instance", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /networks/network/node/te/information_source_state/topology (container) + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /networks/network/node/te/information_source_state/topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=topology.topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + credibility_preference = __builtin__.property(_get_credibility_preference) + logical_network_element = __builtin__.property(_get_logical_network_element) + network_instance = __builtin__.property(_get_network_instance) + topology = __builtin__.property(_get_topology) + + + _pyangbind_elements = OrderedDict([('credibility_preference', credibility_preference), ('logical_network_element', logical_network_element), ('network_instance', network_instance), ('topology', topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/topology/__init__.py new file mode 100644 index 000000000..6562d9003 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/information_source_state/topology/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/information-source-state/topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When the information is processed by the system, +the attributes in this container indicate which topology +is used to generate the result information. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_ref','__network_ref',) + + _yang_name = 'topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'information-source-state', 'topology'] + + def _get_node_ref(self): + """ + Getter method for node_ref, mapped from YANG variable /networks/network/node/te/information_source_state/topology/node_ref (leafref) + + YANG Description: Used to reference a node. +Nodes are identified relative to the network that +contains them. + """ + return self.__node_ref + + def _set_node_ref(self, v, load=False): + """ + Setter method for node_ref, mapped from YANG variable /networks/network/node/te/information_source_state/topology/node_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_ref() directly. + + YANG Description: Used to reference a node. +Nodes are identified relative to the network that +contains them. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__node_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_ref(self): + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_state/topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/information_source_state/topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=False) + + node_ref = __builtin__.property(_get_node_ref) + network_ref = __builtin__.property(_get_network_ref) + + + _pyangbind_elements = OrderedDict([('node_ref', node_ref), ('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/__init__.py new file mode 100644 index 000000000..6741fb0fd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import node +from . import connectivity_matrix_entry +class statistics(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/statistics. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Statistics data. + """ + __slots__ = ('_path_helper', '_extmethods', '__discontinuity_time','__node','__connectivity_matrix_entry',) + + _yang_name = 'statistics' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + self.__node = YANGDynClass(base=node.node, is_container='container', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__connectivity_matrix_entry = YANGDynClass(base=connectivity_matrix_entry.connectivity_matrix_entry, is_container='container', yang_name="connectivity-matrix-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'statistics'] + + def _get_discontinuity_time(self): + """ + Getter method for discontinuity_time, mapped from YANG variable /networks/network/node/te/statistics/discontinuity_time (yang:date-and-time) + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + return self.__discontinuity_time + + def _set_discontinuity_time(self, v, load=False): + """ + Setter method for discontinuity_time, mapped from YANG variable /networks/network/node/te/statistics/discontinuity_time (yang:date-and-time) + If this variable is read-only (config: false) in the + source YANG file, then _set_discontinuity_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_discontinuity_time() directly. + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """discontinuity_time must be of a type compatible with yang:date-and-time""", + 'defined-type': "yang:date-and-time", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False)""", + }) + + self.__discontinuity_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_discontinuity_time(self): + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + + + def _get_node(self): + """ + Getter method for node, mapped from YANG variable /networks/network/node/te/statistics/node (container) + + YANG Description: Contains statistics attributes at the TE node level. + """ + return self.__node + + def _set_node(self, v, load=False): + """ + Setter method for node, mapped from YANG variable /networks/network/node/te/statistics/node (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node() directly. + + YANG Description: Contains statistics attributes at the TE node level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=node.node, is_container='container', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=node.node, is_container='container', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__node = t + if hasattr(self, '_set'): + self._set() + + def _unset_node(self): + self.__node = YANGDynClass(base=node.node, is_container='container', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_connectivity_matrix_entry(self): + """ + Getter method for connectivity_matrix_entry, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry (container) + + YANG Description: Contains statistics attributes at the level of a +connectivity matrix entry. + """ + return self.__connectivity_matrix_entry + + def _set_connectivity_matrix_entry(self, v, load=False): + """ + Setter method for connectivity_matrix_entry, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_connectivity_matrix_entry is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connectivity_matrix_entry() directly. + + YANG Description: Contains statistics attributes at the level of a +connectivity matrix entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=connectivity_matrix_entry.connectivity_matrix_entry, is_container='container', yang_name="connectivity-matrix-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connectivity_matrix_entry must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=connectivity_matrix_entry.connectivity_matrix_entry, is_container='container', yang_name="connectivity-matrix-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__connectivity_matrix_entry = t + if hasattr(self, '_set'): + self._set() + + def _unset_connectivity_matrix_entry(self): + self.__connectivity_matrix_entry = YANGDynClass(base=connectivity_matrix_entry.connectivity_matrix_entry, is_container='container', yang_name="connectivity-matrix-entry", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + discontinuity_time = __builtin__.property(_get_discontinuity_time) + node = __builtin__.property(_get_node) + connectivity_matrix_entry = __builtin__.property(_get_connectivity_matrix_entry) + + + _pyangbind_elements = OrderedDict([('discontinuity_time', discontinuity_time), ('node', node), ('connectivity_matrix_entry', connectivity_matrix_entry), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/connectivity_matrix_entry/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/connectivity_matrix_entry/__init__.py new file mode 100644 index 000000000..7c96f28c4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/connectivity_matrix_entry/__init__.py @@ -0,0 +1,282 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class connectivity_matrix_entry(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/statistics/connectivity-matrix-entry. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains statistics attributes at the level of a +connectivity matrix entry. + """ + __slots__ = ('_path_helper', '_extmethods', '__creates','__deletes','__disables','__enables','__modifies',) + + _yang_name = 'connectivity-matrix-entry' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__creates = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__deletes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'statistics', 'connectivity-matrix-entry'] + + def _get_creates(self): + """ + Getter method for creates, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/creates (yang:counter32) + + YANG Description: Number of times that a connectivity matrix entry was +created. + """ + return self.__creates + + def _set_creates(self, v, load=False): + """ + Setter method for creates, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/creates (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_creates is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_creates() directly. + + YANG Description: Number of times that a connectivity matrix entry was +created. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """creates must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__creates = t + if hasattr(self, '_set'): + self._set() + + def _unset_creates(self): + self.__creates = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_deletes(self): + """ + Getter method for deletes, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/deletes (yang:counter32) + + YANG Description: Number of times that a connectivity matrix entry was +deleted. + """ + return self.__deletes + + def _set_deletes(self, v, load=False): + """ + Setter method for deletes, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/deletes (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_deletes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_deletes() directly. + + YANG Description: Number of times that a connectivity matrix entry was +deleted. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """deletes must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__deletes = t + if hasattr(self, '_set'): + self._set() + + def _unset_deletes(self): + self.__deletes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_disables(self): + """ + Getter method for disables, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/disables (yang:counter32) + + YANG Description: Number of times that a connectivity matrix entry was +disabled. + """ + return self.__disables + + def _set_disables(self, v, load=False): + """ + Setter method for disables, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/disables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_disables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disables() directly. + + YANG Description: Number of times that a connectivity matrix entry was +disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__disables = t + if hasattr(self, '_set'): + self._set() + + def _unset_disables(self): + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_enables(self): + """ + Getter method for enables, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/enables (yang:counter32) + + YANG Description: Number of times that a connectivity matrix entry was +enabled. + """ + return self.__enables + + def _set_enables(self, v, load=False): + """ + Setter method for enables, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/enables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_enables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enables() directly. + + YANG Description: Number of times that a connectivity matrix entry was +enabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__enables = t + if hasattr(self, '_set'): + self._set() + + def _unset_enables(self): + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_modifies(self): + """ + Getter method for modifies, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/modifies (yang:counter32) + + YANG Description: Number of times that a connectivity matrix entry was +modified. + """ + return self.__modifies + + def _set_modifies(self, v, load=False): + """ + Setter method for modifies, mapped from YANG variable /networks/network/node/te/statistics/connectivity_matrix_entry/modifies (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_modifies is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_modifies() directly. + + YANG Description: Number of times that a connectivity matrix entry was +modified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """modifies must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__modifies = t + if hasattr(self, '_set'): + self._set() + + def _unset_modifies(self): + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + creates = __builtin__.property(_get_creates) + deletes = __builtin__.property(_get_deletes) + disables = __builtin__.property(_get_disables) + enables = __builtin__.property(_get_enables) + modifies = __builtin__.property(_get_modifies) + + + _pyangbind_elements = OrderedDict([('creates', creates), ('deletes', deletes), ('disables', disables), ('enables', enables), ('modifies', modifies), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/node/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/node/__init__.py new file mode 100644 index 000000000..4d1e11b5e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/statistics/node/__init__.py @@ -0,0 +1,273 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/statistics/node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains statistics attributes at the TE node level. + """ + __slots__ = ('_path_helper', '_extmethods', '__disables','__enables','__maintenance_sets','__maintenance_clears','__modifies',) + + _yang_name = 'node' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'statistics', 'node'] + + def _get_disables(self): + """ + Getter method for disables, mapped from YANG variable /networks/network/node/te/statistics/node/disables (yang:counter32) + + YANG Description: Number of times that a node was disabled. + """ + return self.__disables + + def _set_disables(self, v, load=False): + """ + Setter method for disables, mapped from YANG variable /networks/network/node/te/statistics/node/disables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_disables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disables() directly. + + YANG Description: Number of times that a node was disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__disables = t + if hasattr(self, '_set'): + self._set() + + def _unset_disables(self): + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_enables(self): + """ + Getter method for enables, mapped from YANG variable /networks/network/node/te/statistics/node/enables (yang:counter32) + + YANG Description: Number of times that a node was enabled. + """ + return self.__enables + + def _set_enables(self, v, load=False): + """ + Setter method for enables, mapped from YANG variable /networks/network/node/te/statistics/node/enables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_enables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enables() directly. + + YANG Description: Number of times that a node was enabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__enables = t + if hasattr(self, '_set'): + self._set() + + def _unset_enables(self): + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_sets(self): + """ + Getter method for maintenance_sets, mapped from YANG variable /networks/network/node/te/statistics/node/maintenance_sets (yang:counter32) + + YANG Description: Number of times that a node was put in maintenance. + """ + return self.__maintenance_sets + + def _set_maintenance_sets(self, v, load=False): + """ + Setter method for maintenance_sets, mapped from YANG variable /networks/network/node/te/statistics/node/maintenance_sets (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_sets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_sets() directly. + + YANG Description: Number of times that a node was put in maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_sets must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_sets = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_sets(self): + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_clears(self): + """ + Getter method for maintenance_clears, mapped from YANG variable /networks/network/node/te/statistics/node/maintenance_clears (yang:counter32) + + YANG Description: Number of times that a node was taken out of +maintenance. + """ + return self.__maintenance_clears + + def _set_maintenance_clears(self, v, load=False): + """ + Setter method for maintenance_clears, mapped from YANG variable /networks/network/node/te/statistics/node/maintenance_clears (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_clears is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_clears() directly. + + YANG Description: Number of times that a node was taken out of +maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_clears must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_clears = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_clears(self): + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_modifies(self): + """ + Getter method for modifies, mapped from YANG variable /networks/network/node/te/statistics/node/modifies (yang:counter32) + + YANG Description: Number of times that a node was modified. + """ + return self.__modifies + + def _set_modifies(self, v, load=False): + """ + Setter method for modifies, mapped from YANG variable /networks/network/node/te/statistics/node/modifies (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_modifies is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_modifies() directly. + + YANG Description: Number of times that a node was modified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """modifies must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__modifies = t + if hasattr(self, '_set'): + self._set() + + def _unset_modifies(self): + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + disables = __builtin__.property(_get_disables) + enables = __builtin__.property(_get_enables) + maintenance_sets = __builtin__.property(_get_maintenance_sets) + maintenance_clears = __builtin__.property(_get_maintenance_clears) + modifies = __builtin__.property(_get_modifies) + + + _pyangbind_elements = OrderedDict([('disables', disables), ('enables', enables), ('maintenance_sets', maintenance_sets), ('maintenance_clears', maintenance_clears), ('modifies', modifies), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/__init__.py new file mode 100644 index 000000000..08e7f93be --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/__init__.py @@ -0,0 +1,357 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import connectivity_matrices +from . import underlay_topology +class te_node_attributes(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains node attributes in a TE topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__admin_status','__connectivity_matrices','__domain_id','__is_abstract','__name','__signaling_address','__underlay_topology',) + + _yang_name = 'te-node-attributes' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__connectivity_matrices = YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes'] + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/network/node/te/te_node_attributes/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the link. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/network/node/te/te_node_attributes/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_connectivity_matrices(self): + """ + Getter method for connectivity_matrices, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices (container) + + YANG Description: Contains a connectivity matrix on a TE node. + """ + return self.__connectivity_matrices + + def _set_connectivity_matrices(self, v, load=False): + """ + Setter method for connectivity_matrices, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_connectivity_matrices is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connectivity_matrices() directly. + + YANG Description: Contains a connectivity matrix on a TE node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connectivity_matrices must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__connectivity_matrices = t + if hasattr(self, '_set'): + self._set() + + def _unset_connectivity_matrices(self): + self.__connectivity_matrices = YANGDynClass(base=connectivity_matrices.connectivity_matrices, is_container='container', yang_name="connectivity-matrices", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_domain_id(self): + """ + Getter method for domain_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/domain_id (uint32) + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + return self.__domain_id + + def _set_domain_id(self, v, load=False): + """ + Setter method for domain_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/domain_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_domain_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_domain_id() directly. + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """domain_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__domain_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_domain_id(self): + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_is_abstract(self): + """ + Getter method for is_abstract, mapped from YANG variable /networks/network/node/te/te_node_attributes/is_abstract (empty) + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + return self.__is_abstract + + def _set_is_abstract(self, v, load=False): + """ + Setter method for is_abstract, mapped from YANG variable /networks/network/node/te/te_node_attributes/is_abstract (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_abstract is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_abstract() directly. + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_abstract must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True)""", + }) + + self.__is_abstract = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_abstract(self): + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/name (string) + + YANG Description: Node name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Node name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_signaling_address(self): + """ + Getter method for signaling_address, mapped from YANG variable /networks/network/node/te/te_node_attributes/signaling_address (inet:ip-address) + + YANG Description: The node's signaling address. + """ + return self.__signaling_address + + def _set_signaling_address(self, v, load=False): + """ + Setter method for signaling_address, mapped from YANG variable /networks/network/node/te/te_node_attributes/signaling_address (inet:ip-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_address() directly. + + YANG Description: The node's signaling address. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_address must be of a type compatible with inet:ip-address""", + 'defined-type': "inet:ip-address", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True)""", + }) + + self.__signaling_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_address(self): + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + + + def _get_underlay_topology(self): + """ + Getter method for underlay_topology, mapped from YANG variable /networks/network/node/te/te_node_attributes/underlay_topology (container) + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + return self.__underlay_topology + + def _set_underlay_topology(self, v, load=False): + """ + Setter method for underlay_topology, mapped from YANG variable /networks/network/node/te/te_node_attributes/underlay_topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay_topology() directly. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay_topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay_topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay_topology(self): + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + connectivity_matrices = __builtin__.property(_get_connectivity_matrices, _set_connectivity_matrices) + domain_id = __builtin__.property(_get_domain_id, _set_domain_id) + is_abstract = __builtin__.property(_get_is_abstract, _set_is_abstract) + name = __builtin__.property(_get_name, _set_name) + signaling_address = __builtin__.property(_get_signaling_address, _set_signaling_address) + underlay_topology = __builtin__.property(_get_underlay_topology, _set_underlay_topology) + + + _pyangbind_elements = OrderedDict([('admin_status', admin_status), ('connectivity_matrices', connectivity_matrices), ('domain_id', domain_id), ('is_abstract', is_abstract), ('name', name), ('signaling_address', signaling_address), ('underlay_topology', underlay_topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/__init__.py new file mode 100644 index 000000000..e1a23ffc8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/__init__.py @@ -0,0 +1,412 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +from . import connectivity_matrix +class connectivity_matrices(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a connectivity matrix on a TE node. + """ + __slots__ = ('_path_helper', '_extmethods', '__number_of_entries','__label_restrictions','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties','__connectivity_matrix',) + + _yang_name = 'connectivity-matrices' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__connectivity_matrix = YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices'] + + def _get_number_of_entries(self): + """ + Getter method for number_of_entries, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/number_of_entries (uint16) + + YANG Description: The number of connectivity matrix entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + return self.__number_of_entries + + def _set_number_of_entries(self, v, load=False): + """ + Setter method for number_of_entries, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/number_of_entries (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number_of_entries is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number_of_entries() directly. + + YANG Description: The number of connectivity matrix entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number_of_entries must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number_of_entries = t + if hasattr(self, '_set'): + self._set() + + def _unset_number_of_entries(self): + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_connectivity_matrix(self): + """ + Getter method for connectivity_matrix, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix (list) + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + return self.__connectivity_matrix + + def _set_connectivity_matrix(self, v, load=False): + """ + Setter method for connectivity_matrix, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_connectivity_matrix is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connectivity_matrix() directly. + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connectivity_matrix must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__connectivity_matrix = t + if hasattr(self, '_set'): + self._set() + + def _unset_connectivity_matrix(self): + self.__connectivity_matrix = YANGDynClass(base=YANGListType("id",connectivity_matrix.connectivity_matrix, yang_name="connectivity-matrix", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="connectivity-matrix", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + number_of_entries = __builtin__.property(_get_number_of_entries, _set_number_of_entries) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + is_allowed = __builtin__.property(_get_is_allowed, _set_is_allowed) + underlay = __builtin__.property(_get_underlay, _set_underlay) + path_constraints = __builtin__.property(_get_path_constraints, _set_path_constraints) + optimizations = __builtin__.property(_get_optimizations, _set_optimizations) + path_properties = __builtin__.property(_get_path_properties) + connectivity_matrix = __builtin__.property(_get_connectivity_matrix, _set_connectivity_matrix) + + + _pyangbind_elements = OrderedDict([('number_of_entries', number_of_entries), ('label_restrictions', label_restrictions), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ('connectivity_matrix', connectivity_matrix), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/__init__.py new file mode 100644 index 000000000..704040fa4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/__init__.py @@ -0,0 +1,405 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import from_ +from . import to +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +class connectivity_matrix(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Represents a node's switching limitations, i.e., +limitations in the interconnecting network TE links +across the node. + """ + __slots__ = ('_path_helper', '_extmethods', '__id','__from_','__to','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties',) + + _yang_name = 'connectivity-matrix' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__from_ = YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__to = YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/id (uint32) + + YANG Description: Identifies the connectivity matrix entry. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: Identifies the connectivity matrix entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_from_(self): + """ + Getter method for from_, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from (container) + + YANG Description: Reference to a source LTP. + """ + return self.__from_ + + def _set_from_(self, v, load=False): + """ + Setter method for from_, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_from_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_from_() directly. + + YANG Description: Reference to a source LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """from_ must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__from_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_from_(self): + self.__from_ = YANGDynClass(base=from_.from_, is_container='container', yang_name="from", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_to(self): + """ + Getter method for to, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to (container) + + YANG Description: Reference to a destination LTP. + """ + return self.__to + + def _set_to(self, v, load=False): + """ + Setter method for to, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_to is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_to() directly. + + YANG Description: Reference to a destination LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """to must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__to = t + if hasattr(self, '_set'): + self._set() + + def _unset_to(self): + self.__to = YANGDynClass(base=to.to, is_container='container', yang_name="to", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + id = __builtin__.property(_get_id, _set_id) + from_ = __builtin__.property(_get_from_, _set_from_) + to = __builtin__.property(_get_to, _set_to) + is_allowed = __builtin__.property(_get_is_allowed, _set_is_allowed) + underlay = __builtin__.property(_get_underlay, _set_underlay) + path_constraints = __builtin__.property(_get_path_constraints, _set_path_constraints) + optimizations = __builtin__.property(_get_optimizations, _set_optimizations) + path_properties = __builtin__.property(_get_path_properties) + + + _pyangbind_elements = OrderedDict([('id', id), ('from_', from_), ('to', to), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/__init__.py new file mode 100644 index 000000000..40157c904 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/__init__.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +class from_(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Reference to a source LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__tp_ref','__label_restrictions',) + + _yang_name = 'from' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from'] + + def _get_tp_ref(self): + """ + Getter method for tp_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/tp_ref (leafref) + + YANG Description: Relative reference to a termination point. + """ + return self.__tp_ref + + def _set_tp_ref(self, v, load=False): + """ + Setter method for tp_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_ref() directly. + + YANG Description: Relative reference to a termination point. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_ref(self): + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + tp_ref = __builtin__.property(_get_tp_ref, _set_tp_ref) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + + + _pyangbind_elements = OrderedDict([('tp_ref', tp_ref), ('label_restrictions', label_restrictions), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py new file mode 100644 index 000000000..5a441f8e0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..be63791cb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..85fe797a5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..3d944dc6d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..c0f426a02 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..252392100 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..7233908c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..c15cb8c1b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..29741fa5e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..076a06d96 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..023f3d755 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..9e9f6bb66 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from_/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/from/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'from', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/from/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/__init__.py new file mode 100644 index 000000000..dccc4ecbe --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + optimization_metric = __builtin__.property(_get_optimization_metric, _set_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers, _set_tiebreakers) + objective_function = __builtin__.property(_get_objective_function, _set_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..dd970e56f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + objective_function_type = __builtin__.property(_get_objective_function_type, _set_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..63bedfaf5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + weight = __builtin__.property(_get_weight, _set_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects, _set_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects, _set_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..07c1656b9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object, _set_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..4a4f8fd0f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..783159e57 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..484b23ab1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..6b55fb421 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..f11e3324c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..80a217af8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..694b6a3c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..9a858772e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..4a0e2b21e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..cea85916d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_include_object = __builtin__.property(_get_route_object_include_object, _set_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..1330f425e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..edcea596e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..20d876129 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..2f3c37938 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..d9361ab75 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..e53b4266d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..f49e95c2a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..f69f0f6b7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..e0333aee2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + tiebreaker = __builtin__.property(_get_tiebreaker, _set_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..26464cef2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type, _set_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py new file mode 100644 index 000000000..2b9f4b692 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection, _set_link_protection) + setup_priority = __builtin__.property(_get_setup_priority, _set_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority, _set_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type, _set_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds, _set_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values, _set_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names, _set_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists, _set_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names, _set_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness, _set_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..fbd5be189 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinities_value = __builtin__.property(_get_path_affinities_value, _set_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..8c29e7d9c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..a8540d0a4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinity_name = __builtin__.property(_get_path_affinity_name, _set_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..53d581fd6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + affinity_name = __builtin__.property(_get_affinity_name, _set_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..9049a1390 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..7f6acfbb0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_metric_bound = __builtin__.property(_get_path_metric_bound, _set_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..177598e6c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + upper_bound = __builtin__.property(_get_upper_bound, _set_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..9a345c8ae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list, _set_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..42bd453b0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + values = __builtin__.property(_get_values, _set_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..83edd896f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name, _set_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..7dba34db6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + names = __builtin__.property(_get_names, _set_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..f4e10c8b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..a2a8fce28 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN +connectivity matrix entry. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN +connectivity matrix entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..9923938e3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/__init__.py new file mode 100644 index 000000000..32bb9a553 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..a7001481d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..d762b9990 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..76beb2d04 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..04f8c534e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..c8ffc5629 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..6bea27715 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..fb3b4a46d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..4fe9aa220 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..11ddae417 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..7440b8732 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..6fc49cf75 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..d758b2922 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..a1a29aebb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..4ca5c4eec --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..3ec157d35 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..e509790c4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..37a85c235 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..4e96bae2f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..ec8734fe0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/__init__.py new file mode 100644 index 000000000..9fb672458 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/__init__.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +class to(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Reference to a destination LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__tp_ref','__label_restrictions',) + + _yang_name = 'to' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to'] + + def _get_tp_ref(self): + """ + Getter method for tp_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/tp_ref (leafref) + + YANG Description: Relative reference to a termination point. + """ + return self.__tp_ref + + def _set_tp_ref(self, v, load=False): + """ + Setter method for tp_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_ref() directly. + + YANG Description: Relative reference to a termination point. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_ref(self): + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + tp_ref = __builtin__.property(_get_tp_ref, _set_tp_ref) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + + + _pyangbind_elements = OrderedDict([('tp_ref', tp_ref), ('label_restrictions', label_restrictions), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py new file mode 100644 index 000000000..8dfdb0a63 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..3b116c4b7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..c9f4959da --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..c5f363333 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..09a0f03ed --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..74637ab69 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..55e8ab30e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..c2477e817 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..cbb3ec616 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..570cd69b5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..541e34252 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..2cae8d9a9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/to/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'to', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/to/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/__init__.py new file mode 100644 index 000000000..29a2ea0fd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py new file mode 100644 index 000000000..408b97bc6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..53ca0bce5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..b0ecb1150 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..cbd8c31c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..3b1310552 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..92e4b3b20 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..ee5484d4d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..f2167210d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..2d48ba9d7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py new file mode 100644 index 000000000..f2bbc86b5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..fa22d7bbd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..5bf46184c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..6377790bb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..c200f5dae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..7f897420e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..e1c306281 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..9c043b272 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..4f8f2de6e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..6fbb783c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py new file mode 100644 index 000000000..f5455155f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..58c254b1e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/connectivity-matrix/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'connectivity-matrix', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/connectivity_matrix/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/__init__.py new file mode 100644 index 000000000..c5a9838d5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..1d5b18963 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..120438948 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..9986d6a93 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..29e0c9a99 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..1970e3999 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..5d88a1763 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..3a96742a0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..8dede38f3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..6fefc3147 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..a14b27f40 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..734a4997e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/__init__.py new file mode 100644 index 000000000..a38eef90a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + optimization_metric = __builtin__.property(_get_optimization_metric, _set_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers, _set_tiebreakers) + objective_function = __builtin__.property(_get_objective_function, _set_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..3938cadf9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + objective_function_type = __builtin__.property(_get_objective_function_type, _set_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..8594a8e95 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + weight = __builtin__.property(_get_weight, _set_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects, _set_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects, _set_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..d96148db3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object, _set_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..be837bdc1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..1e6791351 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..50003dc6a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..b80329a9f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..56737e865 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..c91d34b8b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..e9805bcdf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..c5c2961e6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..4a5b91f1c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..52d91329d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_include_object = __builtin__.property(_get_route_object_include_object, _set_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..4b596318d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..005900b6d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..cec600652 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..5212e8f5d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..de434357d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..a4d2fdce1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..d5f6b873c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..b3cc0d8de --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..1132534b5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + tiebreaker = __builtin__.property(_get_tiebreaker, _set_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..41f4df7a2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type, _set_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/__init__.py new file mode 100644 index 000000000..f8f93bf02 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection, _set_link_protection) + setup_priority = __builtin__.property(_get_setup_priority, _set_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority, _set_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type, _set_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds, _set_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values, _set_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names, _set_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists, _set_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names, _set_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness, _set_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..b04586e5a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinities_value = __builtin__.property(_get_path_affinities_value, _set_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..d4347e12e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..d9511703b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinity_name = __builtin__.property(_get_path_affinity_name, _set_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..5bea16d3c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + affinity_name = __builtin__.property(_get_affinity_name, _set_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..27b87f524 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..89e9dcde5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_metric_bound = __builtin__.property(_get_path_metric_bound, _set_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..9e967408a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + upper_bound = __builtin__.property(_get_upper_bound, _set_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..4a3633c28 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list, _set_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..25eecfaa4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + values = __builtin__.property(_get_values, _set_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..d26858176 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name, _set_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..305a401ae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + names = __builtin__.property(_get_names, _set_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..040c69e2f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..a1d6ad917 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN +connectivity matrices. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN +connectivity matrices. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..c6577089c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/__init__.py new file mode 100644 index 000000000..5633ecb2d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..49d1090f2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..e387bf9bf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..904de87a1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..c7b9e5faf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..8e41672e8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..0a8fae1c4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..9f30f10e6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..9e85f737c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..14f8c67c4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..d816d11be --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..2b21aa6b8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..f24877ab2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..266d0f1c0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..1e2ef7ce2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..70b149a48 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..b6b374b8c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..59e2a8be2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..106738441 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..20a2aee2a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/__init__.py new file mode 100644 index 000000000..4d1acaeb5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/__init__.py new file mode 100644 index 000000000..d6dae0208 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..32f0ddafb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..3522a13e9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..ce150a605 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..ef37b6389 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..64da0e1fd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..7b441de5c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..9a2ff93d5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..8f686b596 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/__init__.py new file mode 100644 index 000000000..c75b0b216 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..e9c1a6170 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..2c3bb0005 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..fc6a16219 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..d1db2ca23 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..0b291e326 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..ccb0ca471 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..5c0fdf8da --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..c70dd4cc0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..01b0c3976 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/__init__.py new file mode 100644 index 000000000..c8b792d49 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..03756dbc3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/connectivity-matrices/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'connectivity-matrices', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/te_node_attributes/connectivity_matrices/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/underlay_topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/underlay_topology/__init__.py new file mode 100644 index 000000000..2e4a62679 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/te_node_attributes/underlay_topology/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class underlay_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/te-node-attributes/underlay-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref',) + + _yang_name = 'underlay-topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'te-node-attributes', 'underlay-topology'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/underlay_topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/te_node_attributes/underlay_topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/__init__.py new file mode 100644 index 000000000..92fbb57f7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/__init__.py @@ -0,0 +1,597 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import client_layer_adaptation +from . import local_link_connectivities +from . import geolocation +from . import statistics +from . import supporting_tunnel_termination_point +class tunnel_termination_point(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A termination point can terminate a tunnel. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_tp_id','__admin_status','__name','__switching_capability','__encoding','__inter_layer_lock_id','__protection_type','__client_layer_adaptation','__local_link_connectivities','__oper_status','__geolocation','__statistics','__supporting_tunnel_termination_point',) + + _yang_name = 'tunnel-termination-point' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_tp_id = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__inter_layer_lock_id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__client_layer_adaptation = YANGDynClass(base=client_layer_adaptation.client_layer_adaptation, is_container='container', yang_name="client-layer-adaptation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__local_link_connectivities = YANGDynClass(base=local_link_connectivities.local_link_connectivities, is_container='container', yang_name="local-link-connectivities", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__supporting_tunnel_termination_point = YANGDynClass(base=YANGListType("node_ref tunnel_tp_ref",supporting_tunnel_termination_point.supporting_tunnel_termination_point, yang_name="supporting-tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-ref tunnel-tp-ref', extensions=None), is_container='list', yang_name="supporting-tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point'] + + def _get_tunnel_tp_id(self): + """ + Getter method for tunnel_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/tunnel_tp_id (binary) + + YANG Description: TTP identifier. + """ + return self.__tunnel_tp_id + + def _set_tunnel_tp_id(self, v, load=False): + """ + Setter method for tunnel_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/tunnel_tp_id (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_tp_id() directly. + + YANG Description: TTP identifier. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_tp_id must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__tunnel_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_tp_id(self): + self.__tunnel_tp_id = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the TTP. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the TTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/name (string) + + YANG Description: A descriptive name for the TTP. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: A descriptive name for the TTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/switching_capability (identityref) + + YANG Description: Switching capability for this interface. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for this interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/encoding (identityref) + + YANG Description: Encoding supported by this interface. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by this interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_inter_layer_lock_id(self): + """ + Getter method for inter_layer_lock_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/inter_layer_lock_id (uint32) + + YANG Description: Inter-layer lock ID, used for path computation in a TE +topology covering multiple layers or multiple regions. + """ + return self.__inter_layer_lock_id + + def _set_inter_layer_lock_id(self, v, load=False): + """ + Setter method for inter_layer_lock_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/inter_layer_lock_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_inter_layer_lock_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_inter_layer_lock_id() directly. + + YANG Description: Inter-layer lock ID, used for path computation in a TE +topology covering multiple layers or multiple regions. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """inter_layer_lock_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__inter_layer_lock_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_inter_layer_lock_id(self): + self.__inter_layer_lock_id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/protection_type (identityref) + + YANG Description: The protection type that this TTP is capable of. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: The protection type that this TTP is capable of. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_client_layer_adaptation(self): + """ + Getter method for client_layer_adaptation, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation (container) + + YANG Description: Contains capability information to support a client-layer +adaptation in a multi-layer topology. + """ + return self.__client_layer_adaptation + + def _set_client_layer_adaptation(self, v, load=False): + """ + Setter method for client_layer_adaptation, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_client_layer_adaptation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_client_layer_adaptation() directly. + + YANG Description: Contains capability information to support a client-layer +adaptation in a multi-layer topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=client_layer_adaptation.client_layer_adaptation, is_container='container', yang_name="client-layer-adaptation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """client_layer_adaptation must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=client_layer_adaptation.client_layer_adaptation, is_container='container', yang_name="client-layer-adaptation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__client_layer_adaptation = t + if hasattr(self, '_set'): + self._set() + + def _unset_client_layer_adaptation(self): + self.__client_layer_adaptation = YANGDynClass(base=client_layer_adaptation.client_layer_adaptation, is_container='container', yang_name="client-layer-adaptation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_local_link_connectivities(self): + """ + Getter method for local_link_connectivities, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities (container) + + YANG Description: Contains an LLCL for a TTP on a TE node. + """ + return self.__local_link_connectivities + + def _set_local_link_connectivities(self, v, load=False): + """ + Setter method for local_link_connectivities, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_local_link_connectivities is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_local_link_connectivities() directly. + + YANG Description: Contains an LLCL for a TTP on a TE node. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=local_link_connectivities.local_link_connectivities, is_container='container', yang_name="local-link-connectivities", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """local_link_connectivities must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=local_link_connectivities.local_link_connectivities, is_container='container', yang_name="local-link-connectivities", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__local_link_connectivities = t + if hasattr(self, '_set'): + self._set() + + def _unset_local_link_connectivities(self): + self.__local_link_connectivities = YANGDynClass(base=local_link_connectivities.local_link_connectivities, is_container='container', yang_name="local-link-connectivities", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/oper_status (te-types:te-oper-status) + + YANG Description: The current operational state of the TTP. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/oper_status (te-types:te-oper-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the TTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with te-types:te-oper-status""", + 'defined-type': "te-types:te-oper-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + + + def _get_geolocation(self): + """ + Getter method for geolocation, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation (container) + + YANG Description: Contains a GPS location. + """ + return self.__geolocation + + def _set_geolocation(self, v, load=False): + """ + Setter method for geolocation, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_geolocation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_geolocation() directly. + + YANG Description: Contains a GPS location. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """geolocation must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__geolocation = t + if hasattr(self, '_set'): + self._set() + + def _unset_geolocation(self): + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_statistics(self): + """ + Getter method for statistics, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics (container) + + YANG Description: Statistics data. + """ + return self.__statistics + + def _set_statistics(self, v, load=False): + """ + Setter method for statistics, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_statistics is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_statistics() directly. + + YANG Description: Statistics data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """statistics must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__statistics = t + if hasattr(self, '_set'): + self._set() + + def _unset_statistics(self): + self.__statistics = YANGDynClass(base=statistics.statistics, is_container='container', yang_name="statistics", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_supporting_tunnel_termination_point(self): + """ + Getter method for supporting_tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point (list) + + YANG Description: Identifies the TTPs on which this TTP depends. + """ + return self.__supporting_tunnel_termination_point + + def _set_supporting_tunnel_termination_point(self, v, load=False): + """ + Setter method for supporting_tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_supporting_tunnel_termination_point is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supporting_tunnel_termination_point() directly. + + YANG Description: Identifies the TTPs on which this TTP depends. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("node_ref tunnel_tp_ref",supporting_tunnel_termination_point.supporting_tunnel_termination_point, yang_name="supporting-tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-ref tunnel-tp-ref', extensions=None), is_container='list', yang_name="supporting-tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supporting_tunnel_termination_point must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("node_ref tunnel_tp_ref",supporting_tunnel_termination_point.supporting_tunnel_termination_point, yang_name="supporting-tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-ref tunnel-tp-ref', extensions=None), is_container='list', yang_name="supporting-tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__supporting_tunnel_termination_point = t + if hasattr(self, '_set'): + self._set() + + def _unset_supporting_tunnel_termination_point(self): + self.__supporting_tunnel_termination_point = YANGDynClass(base=YANGListType("node_ref tunnel_tp_ref",supporting_tunnel_termination_point.supporting_tunnel_termination_point, yang_name="supporting-tunnel-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-ref tunnel-tp-ref', extensions=None), is_container='list', yang_name="supporting-tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + tunnel_tp_id = __builtin__.property(_get_tunnel_tp_id, _set_tunnel_tp_id) + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + name = __builtin__.property(_get_name, _set_name) + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + encoding = __builtin__.property(_get_encoding, _set_encoding) + inter_layer_lock_id = __builtin__.property(_get_inter_layer_lock_id, _set_inter_layer_lock_id) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + client_layer_adaptation = __builtin__.property(_get_client_layer_adaptation, _set_client_layer_adaptation) + local_link_connectivities = __builtin__.property(_get_local_link_connectivities, _set_local_link_connectivities) + oper_status = __builtin__.property(_get_oper_status) + geolocation = __builtin__.property(_get_geolocation) + statistics = __builtin__.property(_get_statistics) + supporting_tunnel_termination_point = __builtin__.property(_get_supporting_tunnel_termination_point, _set_supporting_tunnel_termination_point) + + + _pyangbind_elements = OrderedDict([('tunnel_tp_id', tunnel_tp_id), ('admin_status', admin_status), ('name', name), ('switching_capability', switching_capability), ('encoding', encoding), ('inter_layer_lock_id', inter_layer_lock_id), ('protection_type', protection_type), ('client_layer_adaptation', client_layer_adaptation), ('local_link_connectivities', local_link_connectivities), ('oper_status', oper_status), ('geolocation', geolocation), ('statistics', statistics), ('supporting_tunnel_termination_point', supporting_tunnel_termination_point), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/__init__.py new file mode 100644 index 000000000..35927a2b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/__init__.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import switching_capability +class client_layer_adaptation(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/client-layer-adaptation. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains capability information to support a client-layer +adaptation in a multi-layer topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability',) + + _yang_name = 'client-layer-adaptation' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",switching_capability.switching_capability, yang_name="switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'client-layer-adaptation'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability (list) + + YANG Description: List of supported switching capabilities. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: List of supported switching capabilities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("switching_capability encoding",switching_capability.switching_capability, yang_name="switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("switching_capability encoding",switching_capability.switching_capability, yang_name="switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",switching_capability.switching_capability, yang_name="switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/__init__.py new file mode 100644 index 000000000..4f565ac10 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class switching_capability(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/client-layer-adaptation/switching-capability. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of supported switching capabilities. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability','__encoding','__te_bandwidth',) + + _yang_name = 'switching-capability' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'client-layer-adaptation', 'switching-capability'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/switching_capability (identityref) + + YANG Description: Switching capability for the client-layer adaptation. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for the client-layer adaptation. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/encoding (identityref) + + YANG Description: Encoding supported by the client-layer adaptation. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by the client-layer adaptation. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + encoding = __builtin__.property(_get_encoding, _set_encoding) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ('encoding', encoding), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/__init__.py new file mode 100644 index 000000000..52516d759 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/client-layer-adaptation/switching-capability/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'client-layer-adaptation', 'switching-capability', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..3f44ede78 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/client-layer-adaptation/switching-capability/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'client-layer-adaptation', 'switching-capability', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +terminated on this OTN Tunnel Termination Point +(TTP). + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +terminated on this OTN Tunnel Termination Point +(TTP). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..d4cb37ddf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/client-layer-adaptation/switching-capability/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'client-layer-adaptation', 'switching-capability', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/client_layer_adaptation/switching_capability/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/geolocation/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/geolocation/__init__.py new file mode 100644 index 000000000..60eedb630 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/geolocation/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class geolocation(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/geolocation. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a GPS location. + """ + __slots__ = ('_path_helper', '_extmethods', '__altitude','__latitude','__longitude',) + + _yang_name = 'geolocation' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'geolocation'] + + def _get_altitude(self): + """ + Getter method for altitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/altitude (int64) + + YANG Description: Distance above sea level. + """ + return self.__altitude + + def _set_altitude(self, v, load=False): + """ + Setter method for altitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/altitude (int64) + If this variable is read-only (config: false) in the + source YANG file, then _set_altitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_altitude() directly. + + YANG Description: Distance above sea level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """altitude must be of a type compatible with int64""", + 'defined-type': "int64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False)""", + }) + + self.__altitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_altitude(self): + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + + + def _get_latitude(self): + """ + Getter method for latitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/latitude (geographic-coordinate-degree) + + YANG Description: Relative position north or south on the Earth's surface. + """ + return self.__latitude + + def _set_latitude(self, v, load=False): + """ + Setter method for latitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/latitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_latitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_latitude() directly. + + YANG Description: Relative position north or south on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """latitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__latitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_latitude(self): + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + + def _get_longitude(self): + """ + Getter method for longitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/longitude (geographic-coordinate-degree) + + YANG Description: Angular distance east or west on the Earth's surface. + """ + return self.__longitude + + def _set_longitude(self, v, load=False): + """ + Setter method for longitude, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/geolocation/longitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_longitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_longitude() directly. + + YANG Description: Angular distance east or west on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """longitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__longitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_longitude(self): + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + altitude = __builtin__.property(_get_altitude) + latitude = __builtin__.property(_get_latitude) + longitude = __builtin__.property(_get_longitude) + + + _pyangbind_elements = OrderedDict([('altitude', altitude), ('latitude', latitude), ('longitude', longitude), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/__init__.py new file mode 100644 index 000000000..309e87f52 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/__init__.py @@ -0,0 +1,418 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +from . import local_link_connectivity +class local_link_connectivities(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains an LLCL for a TTP on a TE node. + """ + __slots__ = ('_path_helper', '_extmethods', '__number_of_entries','__label_restrictions','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties','__local_link_connectivity',) + + _yang_name = 'local-link-connectivities' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__local_link_connectivity = YANGDynClass(base=YANGListType("link_tp_ref",local_link_connectivity.local_link_connectivity, yang_name="local-link-connectivity", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-tp-ref', extensions=None), is_container='list', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities'] + + def _get_number_of_entries(self): + """ + Getter method for number_of_entries, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/number_of_entries (uint16) + + YANG Description: The number of LLCL entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + return self.__number_of_entries + + def _set_number_of_entries(self, v, load=False): + """ + Setter method for number_of_entries, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/number_of_entries (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number_of_entries is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number_of_entries() directly. + + YANG Description: The number of LLCL entries. +If this number is specified in the configuration request, +the number is the requested number of entries, which may +not all be listed in the list; +if this number is reported in the state data, +the number is the current number of operational entries. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number_of_entries must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number_of_entries = t + if hasattr(self, '_set'): + self._set() + + def _unset_number_of_entries(self): + self.__number_of_entries = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number-of-entries", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_local_link_connectivity(self): + """ + Getter method for local_link_connectivity, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity (list) + + YANG Description: The termination capabilities between the TTP and the LTP. +This capability information can be used to compute +the tunnel path. +The Interface Adjustment Capability Descriptors (IACDs) +(defined in RFC 6001) on each LTP can be derived from +this list. + """ + return self.__local_link_connectivity + + def _set_local_link_connectivity(self, v, load=False): + """ + Setter method for local_link_connectivity, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_local_link_connectivity is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_local_link_connectivity() directly. + + YANG Description: The termination capabilities between the TTP and the LTP. +This capability information can be used to compute +the tunnel path. +The Interface Adjustment Capability Descriptors (IACDs) +(defined in RFC 6001) on each LTP can be derived from +this list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("link_tp_ref",local_link_connectivity.local_link_connectivity, yang_name="local-link-connectivity", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-tp-ref', extensions=None), is_container='list', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """local_link_connectivity must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("link_tp_ref",local_link_connectivity.local_link_connectivity, yang_name="local-link-connectivity", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-tp-ref', extensions=None), is_container='list', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__local_link_connectivity = t + if hasattr(self, '_set'): + self._set() + + def _unset_local_link_connectivity(self): + self.__local_link_connectivity = YANGDynClass(base=YANGListType("link_tp_ref",local_link_connectivity.local_link_connectivity, yang_name="local-link-connectivity", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-tp-ref', extensions=None), is_container='list', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + number_of_entries = __builtin__.property(_get_number_of_entries, _set_number_of_entries) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + is_allowed = __builtin__.property(_get_is_allowed, _set_is_allowed) + underlay = __builtin__.property(_get_underlay, _set_underlay) + path_constraints = __builtin__.property(_get_path_constraints, _set_path_constraints) + optimizations = __builtin__.property(_get_optimizations, _set_optimizations) + path_properties = __builtin__.property(_get_path_properties) + local_link_connectivity = __builtin__.property(_get_local_link_connectivity, _set_local_link_connectivity) + + + _pyangbind_elements = OrderedDict([('number_of_entries', number_of_entries), ('label_restrictions', label_restrictions), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ('local_link_connectivity', local_link_connectivity), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/__init__.py new file mode 100644 index 000000000..7170e4798 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..6bb6db97a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..3ee376c6a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..e6bcde2cf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..d964dca5c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..360a12234 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..438d60e5b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..8e14efa20 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..56b84bbbd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..c349c4d91 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..0a0f6d7ae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..bfc2cd1e0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/__init__.py new file mode 100644 index 000000000..b7a646ea6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/__init__.py @@ -0,0 +1,368 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restrictions +from . import underlay +from . import path_constraints +from . import optimizations +from . import path_properties +class local_link_connectivity(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The termination capabilities between the TTP and the LTP. +This capability information can be used to compute +the tunnel path. +The Interface Adjustment Capability Descriptors (IACDs) +(defined in RFC 6001) on each LTP can be derived from +this list. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_ref','__label_restrictions','__is_allowed','__underlay','__path_constraints','__optimizations','__path_properties',) + + _yang_name = 'local-link-connectivity' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity'] + + def _get_link_tp_ref(self): + """ + Getter method for link_tp_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/link_tp_ref (leafref) + + YANG Description: LTP. + """ + return self.__link_tp_ref + + def _set_link_tp_ref(self, v, load=False): + """ + Setter method for link_tp_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/link_tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_ref() directly. + + YANG Description: LTP. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__link_tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_ref(self): + self.__link_tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_allowed(self): + """ + Getter method for is_allowed, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/is_allowed (boolean) + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + return self.__is_allowed + + def _set_is_allowed(self, v, load=False): + """ + Setter method for is_allowed, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/is_allowed (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_allowed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_allowed() directly. + + YANG Description: 'true' - switching is allowed; +'false' - switching is disallowed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_allowed must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__is_allowed = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_allowed(self): + self.__is_allowed = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-allowed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_constraints(self): + """ + Getter method for path_constraints, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints (container) + + YANG Description: TE named path constraints container. + """ + return self.__path_constraints + + def _set_path_constraints(self, v, load=False): + """ + Setter method for path_constraints, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_constraints is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_constraints() directly. + + YANG Description: TE named path constraints container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_constraints must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_constraints = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_constraints(self): + self.__path_constraints = YANGDynClass(base=path_constraints.path_constraints, is_container='container', yang_name="path-constraints", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_optimizations(self): + """ + Getter method for optimizations, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__optimizations + + def _set_optimizations(self, v, load=False): + """ + Setter method for optimizations, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimizations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimizations() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimizations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__optimizations = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimizations(self): + self.__optimizations = YANGDynClass(base=optimizations.optimizations, is_container='container', yang_name="optimizations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_properties(self): + """ + Getter method for path_properties, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties (container) + + YANG Description: The TE path properties. + """ + return self.__path_properties + + def _set_path_properties(self, v, load=False): + """ + Setter method for path_properties, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_properties() directly. + + YANG Description: The TE path properties. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_properties(self): + self.__path_properties = YANGDynClass(base=path_properties.path_properties, is_container='container', yang_name="path-properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + link_tp_ref = __builtin__.property(_get_link_tp_ref, _set_link_tp_ref) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + is_allowed = __builtin__.property(_get_is_allowed, _set_is_allowed) + underlay = __builtin__.property(_get_underlay, _set_underlay) + path_constraints = __builtin__.property(_get_path_constraints, _set_path_constraints) + optimizations = __builtin__.property(_get_optimizations, _set_optimizations) + path_properties = __builtin__.property(_get_path_properties) + + + _pyangbind_elements = OrderedDict([('link_tp_ref', link_tp_ref), ('label_restrictions', label_restrictions), ('is_allowed', is_allowed), ('underlay', underlay), ('path_constraints', path_constraints), ('optimizations', optimizations), ('path_properties', path_properties), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/__init__.py new file mode 100644 index 000000000..37d7f23f2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..5d5f6509b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..17b2f661d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..c31cb6145 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..deb12db62 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..efd7f3ed2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..824467f81 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..7fddd85cf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..44028d6f9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..58c0b9c3e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..7125ae3a2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..54adb557b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/__init__.py new file mode 100644 index 000000000..3bc26167a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + optimization_metric = __builtin__.property(_get_optimization_metric, _set_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers, _set_tiebreakers) + objective_function = __builtin__.property(_get_objective_function, _set_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..302ed4830 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + objective_function_type = __builtin__.property(_get_objective_function_type, _set_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..ef6ac03d4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + weight = __builtin__.property(_get_weight, _set_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects, _set_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects, _set_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..f81d927f3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object, _set_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..0ce09fde1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..0cbff483c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..5acd36477 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..aadad5c2c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..6c0b396ee --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..bda9afb84 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..5c7cd97f1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..9fdf39249 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..b5794e333 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..f5e9a3732 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_include_object = __builtin__.property(_get_route_object_include_object, _set_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..374536eb4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..0b9ce19d6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..b21890c48 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..df8c13619 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..7fef4856e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..97b264f0d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..218283dca --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..ce387660e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..5dbea3946 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + tiebreaker = __builtin__.property(_get_tiebreaker, _set_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..6c879cb00 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type, _set_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/__init__.py new file mode 100644 index 000000000..f737852bf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection, _set_link_protection) + setup_priority = __builtin__.property(_get_setup_priority, _set_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority, _set_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type, _set_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds, _set_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values, _set_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names, _set_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists, _set_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names, _set_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness, _set_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..9e3265c07 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinities_value = __builtin__.property(_get_path_affinities_value, _set_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..8d6c0465d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..93c042152 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinity_name = __builtin__.property(_get_path_affinity_name, _set_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..8f1e02095 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + affinity_name = __builtin__.property(_get_affinity_name, _set_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..84a532259 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..62154c4c0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_metric_bound = __builtin__.property(_get_path_metric_bound, _set_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..61dd53dff --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + upper_bound = __builtin__.property(_get_upper_bound, _set_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..28e1d8c74 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list, _set_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..a41c502db --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + values = __builtin__.property(_get_values, _set_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..964651c73 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name, _set_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..2ae4647f9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + names = __builtin__.property(_get_names, _set_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..9d086807a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..8edd4ebde --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN Local +Link Connectivyt entry. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay path of this OTN Local +Link Connectivyt entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..22a8a8f85 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/__init__.py new file mode 100644 index 000000000..8d881474f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..3384b6a42 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..626f7d240 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..3fc26577e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..63035d44d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..42383ee4d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..5a283282d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..425ac19d0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..abb7aee29 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..b3d293b83 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..10f4a55b7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..8764e4794 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..25a5ec822 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..7f9882c11 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..c406a2f54 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..c965f3ce1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..db6b557eb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..909764a6d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..7466c4918 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..75f5ea586 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/__init__.py new file mode 100644 index 000000000..e4c8bb6d3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/__init__.py new file mode 100644 index 000000000..f9690f938 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..beb298aa1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..60abe510b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..5ee2330a9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..94d9603a0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..3dfbe742a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..d9b3a906d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..e4e408039 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..274e9473a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/__init__.py new file mode 100644 index 000000000..56854b585 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..f54312b46 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..013370a26 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..1f048ca63 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..345fd6279 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..453fa0717 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..1e222d434 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..fdc5c1728 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..1f41ade4f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..f0ae851c1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/__init__.py new file mode 100644 index 000000000..b49e97083 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..bc8bc8ecb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/local-link-connectivity/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'local-link-connectivity', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/local_link_connectivity/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/__init__.py new file mode 100644 index 000000000..5ed824918 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/__init__.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import optimization_metric +from . import tiebreakers +from . import objective_function +class optimizations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__optimization_metric','__tiebreakers','__objective_function',) + + _yang_name = 'optimizations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations'] + + def _get_optimization_metric(self): + """ + Getter method for optimization_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric (list) + + YANG Description: TE path metric type. + """ + return self.__optimization_metric + + def _set_optimization_metric(self, v, load=False): + """ + Setter method for optimization_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__optimization_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_metric(self): + self.__optimization_metric = YANGDynClass(base=YANGListType("metric_type",optimization_metric.optimization_metric, yang_name="optimization-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None, choice=False), is_container='list', yang_name="optimization-metric", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_tiebreakers(self): + """ + Getter method for tiebreakers, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers (container) + + YANG Description: Container for the list of tiebreakers. + """ + return self.__tiebreakers + + def _set_tiebreakers(self, v, load=False): + """ + Setter method for tiebreakers, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreakers is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreakers() directly. + + YANG Description: Container for the list of tiebreakers. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreakers must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tiebreakers = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreakers(self): + self.__tiebreakers = YANGDynClass(base=tiebreakers.tiebreakers, is_container='container', yang_name="tiebreakers", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_objective_function(self): + """ + Getter method for objective_function, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function (container) + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + return self.__objective_function + + def _set_objective_function(self, v, load=False): + """ + Setter method for objective_function, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function() directly. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__objective_function = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function(self): + self.__objective_function = YANGDynClass(base=objective_function.objective_function, is_container='container', yang_name="objective-function", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + optimization_metric = __builtin__.property(_get_optimization_metric, _set_optimization_metric) + tiebreakers = __builtin__.property(_get_tiebreakers, _set_tiebreakers) + objective_function = __builtin__.property(_get_objective_function, _set_objective_function) + + __choices__ = {'algorithm': {'metric': ['optimization_metric', 'tiebreakers'], 'objective-function': ['objective_function']}} + _pyangbind_elements = OrderedDict([('optimization_metric', optimization_metric), ('tiebreakers', tiebreakers), ('objective_function', objective_function), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/__init__.py new file mode 100644 index 000000000..3c10569db --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class objective_function(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/objective-function. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The objective function container that includes +attributes to impose when computing a TE path. + """ + __slots__ = ('_path_helper', '_extmethods', '__objective_function_type',) + + _yang_name = 'objective-function' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'objective-function'] + + def _get_objective_function_type(self): + """ + Getter method for objective_function_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/objective_function_type (identityref) + + YANG Description: Objective function entry. + """ + return self.__objective_function_type + + def _set_objective_function_type(self, v, load=False): + """ + Setter method for objective_function_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/objective_function/objective_function_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_objective_function_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_objective_function_type() directly. + + YANG Description: Objective function entry. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """objective_function_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__objective_function_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_objective_function_type(self): + self.__objective_function_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:of-minimize-cost-path"), is_leaf=True, yang_name="objective-function-type", parent=self, choice=('algorithm', 'objective-function'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + objective_function_type = __builtin__.property(_get_objective_function_type, _set_objective_function_type) + + __choices__ = {'algorithm': {'objective-function': ['objective_function_type']}} + _pyangbind_elements = OrderedDict([('objective_function_type', objective_function_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/__init__.py new file mode 100644 index 000000000..abb419890 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/__init__.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import explicit_route_exclude_objects +from . import explicit_route_include_objects +class optimization_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__weight','__explicit_route_exclude_objects','__explicit_route_include_objects',) + + _yang_name = 'optimization-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/metric_type (identityref) + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies the 'metric-type' that the path computation +process uses for optimization. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_weight(self): + """ + Getter method for weight, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/weight (uint8) + + YANG Description: TE path metric normalization weight. + """ + return self.__weight + + def _set_weight(self, v, load=False): + """ + Setter method for weight, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/weight (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_weight is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_weight() directly. + + YANG Description: TE path metric normalization weight. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """weight must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__weight = t + if hasattr(self, '_set'): + self._set() + + def _unset_weight(self): + self.__weight = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(1), is_leaf=True, yang_name="weight", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_explicit_route_exclude_objects(self): + """ + Getter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects (container) + + YANG Description: Container for the 'exclude route' object list. + """ + return self.__explicit_route_exclude_objects + + def _set_explicit_route_exclude_objects(self, v, load=False): + """ + Setter method for explicit_route_exclude_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_exclude_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_exclude_objects() directly. + + YANG Description: Container for the 'exclude route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_exclude_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_exclude_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_exclude_objects(self): + self.__explicit_route_exclude_objects = YANGDynClass(base=explicit_route_exclude_objects.explicit_route_exclude_objects, is_container='container', yang_name="explicit-route-exclude-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_explicit_route_include_objects(self): + """ + Getter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects (container) + + YANG Description: Container for the 'include route' object list. + """ + return self.__explicit_route_include_objects + + def _set_explicit_route_include_objects(self, v, load=False): + """ + Setter method for explicit_route_include_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_explicit_route_include_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_explicit_route_include_objects() directly. + + YANG Description: Container for the 'include route' object list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """explicit_route_include_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__explicit_route_include_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_explicit_route_include_objects(self): + self.__explicit_route_include_objects = YANGDynClass(base=explicit_route_include_objects.explicit_route_include_objects, is_container='container', yang_name="explicit-route-include-objects", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + weight = __builtin__.property(_get_weight, _set_weight) + explicit_route_exclude_objects = __builtin__.property(_get_explicit_route_exclude_objects, _set_explicit_route_exclude_objects) + explicit_route_include_objects = __builtin__.property(_get_explicit_route_include_objects, _set_explicit_route_include_objects) + + __choices__ = {'algorithm': {'metric': ['metric_type', 'weight', 'explicit_route_exclude_objects', 'explicit_route_include_objects']}} + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('weight', weight), ('explicit_route_exclude_objects', explicit_route_exclude_objects), ('explicit_route_include_objects', explicit_route_include_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py new file mode 100644 index 000000000..3831dbff9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_exclude_object +class explicit_route_exclude_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'exclude route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_exclude_object',) + + _yang_name = 'explicit-route-exclude-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects'] + + def _get_route_object_exclude_object(self): + """ + Getter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + return self.__route_object_exclude_object + + def _set_route_object_exclude_object(self, v, load=False): + """ + Setter method for route_object_exclude_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_exclude_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_exclude_object() directly. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_exclude_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_exclude_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_exclude_object(self): + self.__route_object_exclude_object = YANGDynClass(base=YANGListType("index",route_object_exclude_object.route_object_exclude_object, yang_name="route-object-exclude-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-exclude-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_exclude_object = __builtin__.property(_get_route_object_exclude_object, _set_route_object_exclude_object) + + __choices__ = {'algorithm': {'metric': ['route_object_exclude_object']}} + _pyangbind_elements = OrderedDict([('route_object_exclude_object', route_object_exclude_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py new file mode 100644 index 000000000..dea360b24 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/__init__.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +from . import srlg +class route_object_exclude_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be excluded in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop','__srlg',) + + _yang_name = 'route-object-exclude-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + + YANG Description: SRLG container. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=srlg.srlg, is_container='container', yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop'], 'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py new file mode 100644 index 000000000..c2450591f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py new file mode 100644 index 000000000..05755c89d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..aaf805571 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..f8e446cfb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..fe5117d92 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..421eefdb3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py new file mode 100644 index 000000000..e2dd6a91a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class srlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/srlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: SRLG container. + """ + __slots__ = ('_path_helper', '_extmethods', '__srlg',) + + _yang_name = 'srlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'srlg'] + + def _get_srlg(self): + """ + Getter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + + YANG Description: SRLG value. + """ + return self.__srlg + + def _set_srlg(self, v, load=False): + """ + Setter method for srlg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/srlg/srlg (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_srlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_srlg() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """srlg must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__srlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_srlg(self): + self.__srlg = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="srlg", parent=self, choice=('type', 'srlg'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + srlg = __builtin__.property(_get_srlg, _set_srlg) + + __choices__ = {'type': {'srlg': ['srlg']}} + _pyangbind_elements = OrderedDict([('srlg', srlg), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..cd0b15cae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-exclude-objects/route-object-exclude-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-exclude-objects', 'route-object-exclude-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_exclude_objects/route_object_exclude_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/__init__.py new file mode 100644 index 000000000..2af5c34bd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import route_object_include_object +class explicit_route_include_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the 'include route' object list. + """ + __slots__ = ('_path_helper', '_extmethods', '__route_object_include_object',) + + _yang_name = 'explicit-route-include-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects'] + + def _get_route_object_include_object(self): + """ + Getter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + return self.__route_object_include_object + + def _set_route_object_include_object(self, v, load=False): + """ + Setter method for route_object_include_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_route_object_include_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_route_object_include_object() directly. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """route_object_include_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__route_object_include_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_route_object_include_object(self): + self.__route_object_include_object = YANGDynClass(base=YANGListType("index",route_object_include_object.route_object_include_object, yang_name="route-object-include-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="route-object-include-object", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + route_object_include_object = __builtin__.property(_get_route_object_include_object, _set_route_object_include_object) + + __choices__ = {'algorithm': {'metric': ['route_object_include_object']}} + _pyangbind_elements = OrderedDict([('route_object_include_object', route_object_include_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py new file mode 100644 index 000000000..43968474b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/__init__.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class route_object_include_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of Explicit Route Objects to be included in the +path computation. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'route-object-include-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'algorithm': {'metric': ['index']}, 'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py new file mode 100644 index 000000000..ad6d9db46 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py new file mode 100644 index 000000000..d1ce0f206 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..66d61a6af --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..24d91aba6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..bec617c3f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..6281dee5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..9150e2a6e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/optimization-metric/explicit-route-include-objects/route-object-include-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'optimization-metric', 'explicit-route-include-objects', 'route-object-include-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/optimization_metric/explicit_route_include_objects/route_object_include_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/__init__.py new file mode 100644 index 000000000..f5a272d7f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tiebreaker +class tiebreakers(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/tiebreakers. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of tiebreakers. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker',) + + _yang_name = 'tiebreakers' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'tiebreakers'] + + def _get_tiebreaker(self): + """ + Getter method for tiebreaker, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker (list) + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + return self.__tiebreaker + + def _set_tiebreaker(self, v, load=False): + """ + Setter method for tiebreaker, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker() directly. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tiebreaker = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker(self): + self.__tiebreaker = YANGDynClass(base=YANGListType("tiebreaker_type",tiebreaker.tiebreaker, yang_name="tiebreaker", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tiebreaker-type', extensions=None, choice=('algorithm', 'metric')), is_container='list', yang_name="tiebreaker", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + tiebreaker = __builtin__.property(_get_tiebreaker, _set_tiebreaker) + + __choices__ = {'algorithm': {'metric': ['tiebreaker']}} + _pyangbind_elements = OrderedDict([('tiebreaker', tiebreaker), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/__init__.py new file mode 100644 index 000000000..2a5ad102a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/__init__.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tiebreaker(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/optimizations/tiebreakers/tiebreaker. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of tiebreaker criteria to apply on an +equally favored set of paths, in order to pick +the best. + """ + __slots__ = ('_path_helper', '_extmethods', '__tiebreaker_type',) + + _yang_name = 'tiebreaker' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'optimizations', 'tiebreakers', 'tiebreaker'] + + def _get_tiebreaker_type(self): + """ + Getter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + return self.__tiebreaker_type + + def _set_tiebreaker_type(self, v, load=False): + """ + Setter method for tiebreaker_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/optimizations/tiebreakers/tiebreaker/tiebreaker_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tiebreaker_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tiebreaker_type() directly. + + YANG Description: Identifies an entry in the list of tiebreakers. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tiebreaker_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tiebreaker_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tiebreaker_type(self): + self.__tiebreaker_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="tiebreaker-type", parent=self, choice=('algorithm', 'metric'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + tiebreaker_type = __builtin__.property(_get_tiebreaker_type, _set_tiebreaker_type) + + __choices__ = {'algorithm': {'metric': ['tiebreaker_type']}} + _pyangbind_elements = OrderedDict([('tiebreaker_type', tiebreaker_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/__init__.py new file mode 100644 index 000000000..995e60b8b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/__init__.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +from . import path_metric_bounds +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +class path_constraints(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE named path constraints container. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth','__link_protection','__setup_priority','__hold_priority','__signaling_type','__path_metric_bounds','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__disjointness',) + + _yang_name = 'path-constraints' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection(self): + """ + Getter method for link_protection, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/link_protection (identityref) + + YANG Description: Link protection type required for the links included +in the computed path. + """ + return self.__link_protection + + def _set_link_protection(self, v, load=False): + """ + Setter method for link_protection, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/link_protection (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection() directly. + + YANG Description: Link protection type required for the links included +in the computed path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection(self): + self.__link_protection = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:link-protection-unprotected"), is_leaf=True, yang_name="link-protection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_setup_priority(self): + """ + Getter method for setup_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/setup_priority (uint8) + + YANG Description: TE LSP requested setup priority. + """ + return self.__setup_priority + + def _set_setup_priority(self, v, load=False): + """ + Setter method for setup_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/setup_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_setup_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_setup_priority() directly. + + YANG Description: TE LSP requested setup priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """setup_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__setup_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_setup_priority(self): + self.__setup_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="setup-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_hold_priority(self): + """ + Getter method for hold_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/hold_priority (uint8) + + YANG Description: TE LSP requested hold priority. + """ + return self.__hold_priority + + def _set_hold_priority(self, v, load=False): + """ + Setter method for hold_priority, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/hold_priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_priority() directly. + + YANG Description: TE LSP requested hold priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__hold_priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_priority(self): + self.__hold_priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8)(7), is_leaf=True, yang_name="hold-priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_signaling_type(self): + """ + Getter method for signaling_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/signaling_type (identityref) + + YANG Description: TE tunnel path signaling type. + """ + return self.__signaling_type + + def _set_signaling_type(self, v, load=False): + """ + Setter method for signaling_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/signaling_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_type() directly. + + YANG Description: TE tunnel path signaling type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__signaling_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_type(self): + self.__signaling_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-static': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-rsvp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-setup-sr': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), default=six.text_type("te-types:path-setup-rsvp"), is_leaf=True, yang_name="signaling-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_path_metric_bounds(self): + """ + Getter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds (container) + + YANG Description: TE path metric bounds container. + """ + return self.__path_metric_bounds + + def _set_path_metric_bounds(self, v, load=False): + """ + Setter method for path_metric_bounds, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bounds is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bounds() directly. + + YANG Description: TE path metric bounds container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bounds must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_metric_bounds = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bounds(self): + self.__path_metric_bounds = YANGDynClass(base=path_metric_bounds.path_metric_bounds, is_container='container', yang_name="path-metric-bounds", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/disjointness (te-path-disjointness) + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/disjointness (te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. +When configured for a primary path, the disjointness level +applies to all secondary LSPs. When configured for a +secondary path, the disjointness level overrides the level +configured for the primary path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-path-disjointness""", + 'defined-type': "ietf-te-topology:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-path-disjointness', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + link_protection = __builtin__.property(_get_link_protection, _set_link_protection) + setup_priority = __builtin__.property(_get_setup_priority, _set_setup_priority) + hold_priority = __builtin__.property(_get_hold_priority, _set_hold_priority) + signaling_type = __builtin__.property(_get_signaling_type, _set_signaling_type) + path_metric_bounds = __builtin__.property(_get_path_metric_bounds, _set_path_metric_bounds) + path_affinities_values = __builtin__.property(_get_path_affinities_values, _set_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names, _set_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists, _set_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names, _set_path_srlgs_names) + disjointness = __builtin__.property(_get_disjointness, _set_disjointness) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ('link_protection', link_protection), ('setup_priority', setup_priority), ('hold_priority', hold_priority), ('signaling_type', signaling_type), ('path_metric_bounds', path_metric_bounds), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/__init__.py new file mode 100644 index 000000000..d3b86bd00 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinities_value = __builtin__.property(_get_path_affinities_value, _set_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..0d53fa7eb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/__init__.py new file mode 100644 index 000000000..915eb1efb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_affinity_name = __builtin__.property(_get_path_affinity_name, _set_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..f4886c5ce --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + affinity_name = __builtin__.property(_get_affinity_name, _set_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..2a14ea23b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/__init__.py new file mode 100644 index 000000000..9a35d6f91 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric_bound +class path_metric_bounds(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-metric-bounds. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric bounds container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric_bound',) + + _yang_name = 'path-metric-bounds' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-metric-bounds'] + + def _get_path_metric_bound(self): + """ + Getter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound (list) + + YANG Description: List of TE path metric bounds. + """ + return self.__path_metric_bound + + def _set_path_metric_bound(self, v, load=False): + """ + Setter method for path_metric_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric_bound() directly. + + YANG Description: List of TE path metric bounds. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric_bound must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_metric_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric_bound(self): + self.__path_metric_bound = YANGDynClass(base=YANGListType("metric_type",path_metric_bound.path_metric_bound, yang_name="path-metric-bound", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_metric_bound = __builtin__.property(_get_path_metric_bound, _set_path_metric_bound) + + + _pyangbind_elements = OrderedDict([('path_metric_bound', path_metric_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/__init__.py new file mode 100644 index 000000000..c015281ab --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/__init__.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric_bound(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-metric-bounds/path-metric-bound. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of TE path metric bounds. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__upper_bound',) + + _yang_name = 'path-metric-bound' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-metric-bounds', 'path-metric-bound'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: Identifies an entry in the list of 'metric-type' items +bound for the TE path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_upper_bound(self): + """ + Getter method for upper_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + return self.__upper_bound + + def _set_upper_bound(self, v, load=False): + """ + Setter method for upper_bound, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_metric_bounds/path_metric_bound/upper_bound (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_upper_bound is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_upper_bound() directly. + + YANG Description: Upper bound on the end-to-end TE path metric. A zero +indicates an unbounded upper limit for the specific +'metric-type'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """upper_bound must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__upper_bound = t + if hasattr(self, '_set'): + self._set() + + def _unset_upper_bound(self): + self.__upper_bound = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64)(0), is_leaf=True, yang_name="upper-bound", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + metric_type = __builtin__.property(_get_metric_type, _set_metric_type) + upper_bound = __builtin__.property(_get_upper_bound, _set_upper_bound) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('upper_bound', upper_bound), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..1be416c5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list, _set_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..656884a88 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + values = __builtin__.property(_get_values, _set_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/__init__.py new file mode 100644 index 000000000..0e50a196f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name, _set_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..4010d6485 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + usage = __builtin__.property(_get_usage, _set_usage) + names = __builtin__.property(_get_names, _set_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/__init__.py new file mode 100644 index 000000000..82e5ccc65 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..43c1a9a43 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist','__odtu_flex_type',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None, choice=('technology', 'otn')), is_container='list', yang_name="odulist", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN Local +Link Connectivities. + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs +set up along the underlay paths of these OTN Local +Link Connectivities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + __choices__ = {'technology': {'otn': ['odulist', 'odtu_flex_type']}} + _pyangbind_elements = OrderedDict([('odulist', odulist), ('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..637f3a83b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-constraints/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-constraints', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_constraints/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'number', 'ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/__init__.py new file mode 100644 index 000000000..121cb2026 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/__init__.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_metric +from . import path_affinities_values +from . import path_affinity_names +from . import path_srlgs_lists +from . import path_srlgs_names +from . import path_route_objects +class path_properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The TE path properties. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_metric','__path_affinities_values','__path_affinity_names','__path_srlgs_lists','__path_srlgs_names','__path_route_objects',) + + _yang_name = 'path-properties' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties'] + + def _get_path_metric(self): + """ + Getter method for path_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric (list) + + YANG Description: TE path metric type. + """ + return self.__path_metric + + def _set_path_metric(self, v, load=False): + """ + Setter method for path_metric, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_metric() directly. + + YANG Description: TE path metric type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_metric must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_metric(self): + self.__path_metric = YANGDynClass(base=YANGListType("metric_type",path_metric.path_metric, yang_name="path-metric", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='metric-type', extensions=None), is_container='list', yang_name="path-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + + def _get_path_affinities_values(self): + """ + Getter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values (container) + + YANG Description: Path affinities represented as values. + """ + return self.__path_affinities_values + + def _set_path_affinities_values(self, v, load=False): + """ + Setter method for path_affinities_values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_values() directly. + + YANG Description: Path affinities represented as values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_values must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinities_values = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_values(self): + self.__path_affinities_values = YANGDynClass(base=path_affinities_values.path_affinities_values, is_container='container', yang_name="path-affinities-values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_affinity_names(self): + """ + Getter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names (container) + + YANG Description: Path affinities represented as names. + """ + return self.__path_affinity_names + + def _set_path_affinity_names(self, v, load=False): + """ + Setter method for path_affinity_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_names() directly. + + YANG Description: Path affinities represented as names. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_affinity_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_names(self): + self.__path_affinity_names = YANGDynClass(base=path_affinity_names.path_affinity_names, is_container='container', yang_name="path-affinity-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_lists(self): + """ + Getter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists (container) + + YANG Description: Path SRLG properties container. + """ + return self.__path_srlgs_lists + + def _set_path_srlgs_lists(self, v, load=False): + """ + Setter method for path_srlgs_lists, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_lists is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_lists() directly. + + YANG Description: Path SRLG properties container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_lists must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_lists = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_lists(self): + self.__path_srlgs_lists = YANGDynClass(base=path_srlgs_lists.path_srlgs_lists, is_container='container', yang_name="path-srlgs-lists", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_srlgs_names(self): + """ + Getter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names (container) + + YANG Description: Container for the list of named SRLGs. + """ + return self.__path_srlgs_names + + def _set_path_srlgs_names(self, v, load=False): + """ + Setter method for path_srlgs_names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_names() directly. + + YANG Description: Container for the list of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_names must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_srlgs_names = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_names(self): + self.__path_srlgs_names = YANGDynClass(base=path_srlgs_names.path_srlgs_names, is_container='container', yang_name="path-srlgs-names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_path_route_objects(self): + """ + Getter method for path_route_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects (container) + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + return self.__path_route_objects + + def _set_path_route_objects(self, v, load=False): + """ + Setter method for path_route_objects, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_objects is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_objects() directly. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_objects must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__path_route_objects = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_objects(self): + self.__path_route_objects = YANGDynClass(base=path_route_objects.path_route_objects, is_container='container', yang_name="path-route-objects", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + path_metric = __builtin__.property(_get_path_metric) + path_affinities_values = __builtin__.property(_get_path_affinities_values) + path_affinity_names = __builtin__.property(_get_path_affinity_names) + path_srlgs_lists = __builtin__.property(_get_path_srlgs_lists) + path_srlgs_names = __builtin__.property(_get_path_srlgs_names) + path_route_objects = __builtin__.property(_get_path_route_objects) + + + _pyangbind_elements = OrderedDict([('path_metric', path_metric), ('path_affinities_values', path_affinities_values), ('path_affinity_names', path_affinity_names), ('path_srlgs_lists', path_srlgs_lists), ('path_srlgs_names', path_srlgs_names), ('path_route_objects', path_route_objects), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/__init__.py new file mode 100644 index 000000000..5f23f944f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinities_value +class path_affinities_values(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-affinities-values. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as values. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinities_value',) + + _yang_name = 'path-affinities-values' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-affinities-values'] + + def _get_path_affinities_value(self): + """ + Getter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinities_value + + def _set_path_affinities_value(self, v, load=False): + """ + Setter method for path_affinities_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinities_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinities_value() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinities_value must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinities_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinities_value(self): + self.__path_affinities_value = YANGDynClass(base=YANGListType("usage",path_affinities_value.path_affinities_value, yang_name="path-affinities-value", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinities-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinities_value = __builtin__.property(_get_path_affinities_value) + + + _pyangbind_elements = OrderedDict([('path_affinities_value', path_affinities_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/__init__.py new file mode 100644 index 000000000..6e7ba3ec4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_affinities_value(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-affinities-values/path-affinities-value. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__value',) + + _yang_name = 'path-affinities-value' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-affinities-values', 'path-affinities-value'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of value affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + + YANG Description: The affinity value. The default is empty. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinities_values/path_affinities_value/value (admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: The affinity value. The default is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with admin-groups""", + 'defined-type': "ietf-te-topology:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], default=six.text_type(""), is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='admin-groups', is_config=False) + + usage = __builtin__.property(_get_usage) + value = __builtin__.property(_get_value) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/__init__.py new file mode 100644 index 000000000..75ec7e310 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_affinity_name +class path_affinity_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-affinity-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path affinities represented as names. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_affinity_name',) + + _yang_name = 'path-affinity-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-affinity-names'] + + def _get_path_affinity_name(self): + """ + Getter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name (list) + + YANG Description: List of named affinity constraints. + """ + return self.__path_affinity_name + + def _set_path_affinity_name(self, v, load=False): + """ + Setter method for path_affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_affinity_name() directly. + + YANG Description: List of named affinity constraints. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_affinity_name(self): + self.__path_affinity_name = YANGDynClass(base=YANGListType("usage",path_affinity_name.path_affinity_name, yang_name="path-affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_affinity_name = __builtin__.property(_get_path_affinity_name) + + + _pyangbind_elements = OrderedDict([('path_affinity_name', path_affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/__init__.py new file mode 100644 index 000000000..6d2740363 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/__init__.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import affinity_name +class path_affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-affinity-names/path-affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinity constraints. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__affinity_name',) + + _yang_name = 'path-affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-affinity-names', 'path-affinity-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in the list of named affinity +constraints. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-all': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-include-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:resource-aff-exclude-any': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_affinity_name(self): + """ + Getter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + + YANG Description: List of named affinities. + """ + return self.__affinity_name + + def _set_affinity_name(self, v, load=False): + """ + Setter method for affinity_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_affinity_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_affinity_name() directly. + + YANG Description: List of named affinities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """affinity_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__affinity_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_affinity_name(self): + self.__affinity_name = YANGDynClass(base=YANGListType("name",affinity_name.affinity_name, yang_name="affinity-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="affinity-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + usage = __builtin__.property(_get_usage) + affinity_name = __builtin__.property(_get_affinity_name) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('affinity_name', affinity_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py new file mode 100644 index 000000000..d00d8136a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class affinity_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-affinity-names/path-affinity-name/affinity-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named affinities. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'affinity-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-affinity-names', 'path-affinity-name', 'affinity-name'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + + YANG Description: Identifies a named affinity entry. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_affinity_names/path_affinity_name/affinity_name/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Identifies a named affinity entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/__init__.py new file mode 100644 index 000000000..34ad252cf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_metric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-metric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE path metric type. + """ + __slots__ = ('_path_helper', '_extmethods', '__metric_type','__accumulative_value',) + + _yang_name = 'path-metric' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-metric'] + + def _get_metric_type(self): + """ + Getter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/metric_type (identityref) + + YANG Description: TE path metric type. + """ + return self.__metric_type + + def _set_metric_type(self, v, load=False): + """ + Setter method for metric_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/metric_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_metric_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_metric_type() directly. + + YANG Description: TE path metric type. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """metric_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__metric_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_metric_type(self): + self.__metric_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-te': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-igp': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-hop': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-average': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-delay-minimum': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-includes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:path-metric-optimize-excludes': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="metric-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_accumulative_value(self): + """ + Getter method for accumulative_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/accumulative_value (uint64) + + YANG Description: TE path metric accumulative value. + """ + return self.__accumulative_value + + def _set_accumulative_value(self, v, load=False): + """ + Setter method for accumulative_value, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_metric/accumulative_value (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_accumulative_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_accumulative_value() directly. + + YANG Description: TE path metric accumulative value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """accumulative_value must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False)""", + }) + + self.__accumulative_value = t + if hasattr(self, '_set'): + self._set() + + def _unset_accumulative_value(self): + self.__accumulative_value = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="accumulative-value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=False) + + metric_type = __builtin__.property(_get_metric_type) + accumulative_value = __builtin__.property(_get_accumulative_value) + + + _pyangbind_elements = OrderedDict([('metric_type', metric_type), ('accumulative_value', accumulative_value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/__init__.py new file mode 100644 index 000000000..826eb49d2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_route_object +class path_route_objects(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of route objects either returned by +the computation engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_route_object',) + + _yang_name = 'path-route-objects' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects'] + + def _get_path_route_object(self): + """ + Getter method for path_route_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object (list) + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + return self.__path_route_object + + def _set_path_route_object(self, v, load=False): + """ + Setter method for path_route_object, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_route_object is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_route_object() directly. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_route_object must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_route_object = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_route_object(self): + self.__path_route_object = YANGDynClass(base=YANGListType("index",path_route_object.path_route_object, yang_name="path-route-object", parent=self, is_container='list', user_ordered=True, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="path-route-object", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_route_object = __builtin__.property(_get_path_route_object) + + + _pyangbind_elements = OrderedDict([('path_route_object', path_route_object), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/__init__.py new file mode 100644 index 000000000..3f433dc1f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_route_object(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of route objects either returned by the computation +engine or actually used by an LSP. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-route-object' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/index (uint32) + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Route object entry index. The index is used to +identify an entry in the list. The order of entries +is defined by the user without relying on key +values. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=False) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop) + label_hop = __builtin__.property(_get_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('index', index), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py new file mode 100644 index 000000000..f8ad1dc66 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + as_number = __builtin__.property(_get_as_number) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/__init__.py new file mode 100644 index 000000000..c577696ea --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + te_label = __builtin__.property(_get_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py new file mode 100644 index 000000000..e8bc5dd22 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=False) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=False) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=False) + + generic = __builtin__.property(_get_generic) + otn = __builtin__.property(_get_otn) + vlanid = __builtin__.property(_get_vlanid) + direction = __builtin__.property(_get_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..15655b7d1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=False) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=False) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=False) + + tpn = __builtin__.property(_get_tpn) + tsg = __builtin__.property(_get_tsg) + ts_list = __builtin__.property(_get_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py new file mode 100644 index 000000000..417bcf3cf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py new file mode 100644 index 000000000..bef8709eb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..255ef9336 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-route-objects/path-route-object/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-route-objects', 'path-route-object', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=False) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=False) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=False) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_route_objects/path_route_object/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=False) + + link_tp_id = __builtin__.property(_get_link_tp_id) + node_id = __builtin__.property(_get_node_id) + hop_type = __builtin__.property(_get_hop_type) + direction = __builtin__.property(_get_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/__init__.py new file mode 100644 index 000000000..ecfdfafc0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_list +class path_srlgs_lists(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-srlgs-lists. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Path SRLG properties container. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_list',) + + _yang_name = 'path-srlgs-lists' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-srlgs-lists'] + + def _get_path_srlgs_list(self): + """ + Getter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list (list) + + YANG Description: List of SRLG values to be included or excluded. + """ + return self.__path_srlgs_list + + def _set_path_srlgs_list(self, v, load=False): + """ + Setter method for path_srlgs_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_list() directly. + + YANG Description: List of SRLG values to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_list must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_list(self): + self.__path_srlgs_list = YANGDynClass(base=YANGListType("usage",path_srlgs_list.path_srlgs_list, yang_name="path-srlgs-list", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_list = __builtin__.property(_get_path_srlgs_list) + + + _pyangbind_elements = OrderedDict([('path_srlgs_list', path_srlgs_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py new file mode 100644 index 000000000..14fb3f2b0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_list(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-srlgs-lists/path-srlgs-list. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of SRLG values to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__values',) + + _yang_name = 'path-srlgs-list' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-srlgs-lists', 'path-srlgs-list'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_values(self): + """ + Getter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + + YANG Description: List of SRLG values. + """ + return self.__values + + def _set_values(self, v, load=False): + """ + Setter method for values, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_lists/path_srlgs_list/values (srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_values is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_values() directly. + + YANG Description: List of SRLG values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """values must be of a type compatible with srlg""", + 'defined-type': "ietf-te-topology:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False)""", + }) + + self.__values = t + if hasattr(self, '_set'): + self._set() + + def _unset_values(self): + self.__values = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="values", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='srlg', is_config=False) + + usage = __builtin__.property(_get_usage) + values = __builtin__.property(_get_values) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('values', values), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/__init__.py new file mode 100644 index 000000000..48d9f8f04 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_srlgs_name +class path_srlgs_names(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-srlgs-names. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container for the list of named SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_srlgs_name',) + + _yang_name = 'path-srlgs-names' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-srlgs-names'] + + def _get_path_srlgs_name(self): + """ + Getter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name (list) + + YANG Description: List of named SRLGs to be included or excluded. + """ + return self.__path_srlgs_name + + def _set_path_srlgs_name(self, v, load=False): + """ + Setter method for path_srlgs_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_srlgs_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_srlgs_name() directly. + + YANG Description: List of named SRLGs to be included or excluded. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_srlgs_name must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False)""", + }) + + self.__path_srlgs_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_srlgs_name(self): + self.__path_srlgs_name = YANGDynClass(base=YANGListType("usage",path_srlgs_name.path_srlgs_name, yang_name="path-srlgs-name", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='usage', extensions=None), is_container='list', yang_name="path-srlgs-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=False) + + path_srlgs_name = __builtin__.property(_get_path_srlgs_name) + + + _pyangbind_elements = OrderedDict([('path_srlgs_name', path_srlgs_name), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/__init__.py new file mode 100644 index 000000000..874fef349 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class path_srlgs_name(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/path-properties/path-srlgs-names/path-srlgs-name. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of named SRLGs to be included or excluded. + """ + __slots__ = ('_path_helper', '_extmethods', '__usage','__names',) + + _yang_name = 'path-srlgs-name' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'path-properties', 'path-srlgs-names', 'path-srlgs-name'] + + def _get_usage(self): + """ + Getter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + return self.__usage + + def _set_usage(self, v, load=False): + """ + Setter method for usage, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/usage (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_usage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_usage() directly. + + YANG Description: Identifies an entry in a list of named SRLGs to either +include or exclude. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """usage must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False)""", + }) + + self.__usage = t + if hasattr(self, '_set'): + self._set() + + def _unset_usage(self): + self.__usage = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-include-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-object': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:route-exclude-srlg': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="usage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=False) + + + def _get_names(self): + """ + Getter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/names (string) + + YANG Description: List of named SRLGs. + """ + return self.__names + + def _set_names(self, v, load=False): + """ + Setter method for names, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/path_properties/path_srlgs_names/path_srlgs_name/names (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_names is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_names() directly. + + YANG Description: List of named SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """names must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False)""", + }) + + self.__names = t + if hasattr(self, '_set'): + self._set() + + def _unset_names(self): + self.__names = YANGDynClass(unique=True, base=TypedListType(allowed_type=six.text_type), is_leaf=False, yang_name="names", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=False) + + usage = __builtin__.property(_get_usage) + names = __builtin__.property(_get_names) + + + _pyangbind_elements = OrderedDict([('usage', usage), ('names', names), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/__init__.py new file mode 100644 index 000000000..e1d683aeb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/__init__.py new file mode 100644 index 000000000..4347a263e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..274232036 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..d2bba5863 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..c46d30191 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..7a629f62c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..f372a5fb3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..4f7ede0ea --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..88dac6553 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..b5a3dfc51 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/__init__.py new file mode 100644 index 000000000..bca7e6259 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..2ae1b7cb8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..68297031d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..80afc929d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..51e80cb34 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..bc1e9a494 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..94bf3ca84 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..3e3ac258c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..0a2138b5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..018032a5f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/__init__.py new file mode 100644 index 000000000..2ba01ce03 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..ee3791127 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/local-link-connectivities/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'local-link-connectivities', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/local_link_connectivities/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/__init__.py new file mode 100644 index 000000000..f80379174 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel_termination_point +from . import local_link_connectivity +class statistics(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/statistics. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Statistics data. + """ + __slots__ = ('_path_helper', '_extmethods', '__discontinuity_time','__tunnel_termination_point','__local_link_connectivity',) + + _yang_name = 'statistics' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + self.__tunnel_termination_point = YANGDynClass(base=tunnel_termination_point.tunnel_termination_point, is_container='container', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__local_link_connectivity = YANGDynClass(base=local_link_connectivity.local_link_connectivity, is_container='container', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'statistics'] + + def _get_discontinuity_time(self): + """ + Getter method for discontinuity_time, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/discontinuity_time (yang:date-and-time) + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + return self.__discontinuity_time + + def _set_discontinuity_time(self, v, load=False): + """ + Setter method for discontinuity_time, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/discontinuity_time (yang:date-and-time) + If this variable is read-only (config: false) in the + source YANG file, then _set_discontinuity_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_discontinuity_time() directly. + + YANG Description: The time of the most recent occasion at which any one or +more of this interface's counters suffered a +discontinuity. If no such discontinuities have occurred +since the last re-initialization of the local management +subsystem, then this node contains the time the local +management subsystem re-initialized itself. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """discontinuity_time must be of a type compatible with yang:date-and-time""", + 'defined-type': "yang:date-and-time", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False)""", + }) + + self.__discontinuity_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_discontinuity_time(self): + self.__discontinuity_time = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})'}), is_leaf=True, yang_name="discontinuity-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:date-and-time', is_config=False) + + + def _get_tunnel_termination_point(self): + """ + Getter method for tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point (container) + + YANG Description: Contains statistics attributes at the TE TTP level. + """ + return self.__tunnel_termination_point + + def _set_tunnel_termination_point(self, v, load=False): + """ + Setter method for tunnel_termination_point, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_point is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_point() directly. + + YANG Description: Contains statistics attributes at the TE TTP level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_point.tunnel_termination_point, is_container='container', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_point must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_point.tunnel_termination_point, is_container='container', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__tunnel_termination_point = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_point(self): + self.__tunnel_termination_point = YANGDynClass(base=tunnel_termination_point.tunnel_termination_point, is_container='container', yang_name="tunnel-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_local_link_connectivity(self): + """ + Getter method for local_link_connectivity, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity (container) + + YANG Description: Contains statistics attributes at the TE LLCL (Local Link +Connectivity List) level. + """ + return self.__local_link_connectivity + + def _set_local_link_connectivity(self, v, load=False): + """ + Setter method for local_link_connectivity, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_local_link_connectivity is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_local_link_connectivity() directly. + + YANG Description: Contains statistics attributes at the TE LLCL (Local Link +Connectivity List) level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=local_link_connectivity.local_link_connectivity, is_container='container', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """local_link_connectivity must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=local_link_connectivity.local_link_connectivity, is_container='container', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__local_link_connectivity = t + if hasattr(self, '_set'): + self._set() + + def _unset_local_link_connectivity(self): + self.__local_link_connectivity = YANGDynClass(base=local_link_connectivity.local_link_connectivity, is_container='container', yang_name="local-link-connectivity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + discontinuity_time = __builtin__.property(_get_discontinuity_time) + tunnel_termination_point = __builtin__.property(_get_tunnel_termination_point) + local_link_connectivity = __builtin__.property(_get_local_link_connectivity) + + + _pyangbind_elements = OrderedDict([('discontinuity_time', discontinuity_time), ('tunnel_termination_point', tunnel_termination_point), ('local_link_connectivity', local_link_connectivity), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/__init__.py new file mode 100644 index 000000000..e533bc72d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/__init__.py @@ -0,0 +1,272 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class local_link_connectivity(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/statistics/local-link-connectivity. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains statistics attributes at the TE LLCL (Local Link +Connectivity List) level. + """ + __slots__ = ('_path_helper', '_extmethods', '__creates','__deletes','__disables','__enables','__modifies',) + + _yang_name = 'local-link-connectivity' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__creates = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__deletes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'statistics', 'local-link-connectivity'] + + def _get_creates(self): + """ + Getter method for creates, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/creates (yang:counter32) + + YANG Description: Number of times that an LLCL entry was created. + """ + return self.__creates + + def _set_creates(self, v, load=False): + """ + Setter method for creates, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/creates (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_creates is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_creates() directly. + + YANG Description: Number of times that an LLCL entry was created. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """creates must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__creates = t + if hasattr(self, '_set'): + self._set() + + def _unset_creates(self): + self.__creates = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="creates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_deletes(self): + """ + Getter method for deletes, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/deletes (yang:counter32) + + YANG Description: Number of times that an LLCL entry was deleted. + """ + return self.__deletes + + def _set_deletes(self, v, load=False): + """ + Setter method for deletes, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/deletes (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_deletes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_deletes() directly. + + YANG Description: Number of times that an LLCL entry was deleted. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """deletes must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__deletes = t + if hasattr(self, '_set'): + self._set() + + def _unset_deletes(self): + self.__deletes = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="deletes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_disables(self): + """ + Getter method for disables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/disables (yang:counter32) + + YANG Description: Number of times that an LLCL entry was disabled. + """ + return self.__disables + + def _set_disables(self, v, load=False): + """ + Setter method for disables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/disables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_disables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disables() directly. + + YANG Description: Number of times that an LLCL entry was disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__disables = t + if hasattr(self, '_set'): + self._set() + + def _unset_disables(self): + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_enables(self): + """ + Getter method for enables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/enables (yang:counter32) + + YANG Description: Number of times that an LLCL entry was enabled. + """ + return self.__enables + + def _set_enables(self, v, load=False): + """ + Setter method for enables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/enables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_enables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enables() directly. + + YANG Description: Number of times that an LLCL entry was enabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__enables = t + if hasattr(self, '_set'): + self._set() + + def _unset_enables(self): + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_modifies(self): + """ + Getter method for modifies, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/modifies (yang:counter32) + + YANG Description: Number of times that an LLCL entry was modified. + """ + return self.__modifies + + def _set_modifies(self, v, load=False): + """ + Setter method for modifies, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/local_link_connectivity/modifies (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_modifies is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_modifies() directly. + + YANG Description: Number of times that an LLCL entry was modified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """modifies must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__modifies = t + if hasattr(self, '_set'): + self._set() + + def _unset_modifies(self): + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + creates = __builtin__.property(_get_creates) + deletes = __builtin__.property(_get_deletes) + disables = __builtin__.property(_get_disables) + enables = __builtin__.property(_get_enables) + modifies = __builtin__.property(_get_modifies) + + + _pyangbind_elements = OrderedDict([('creates', creates), ('deletes', deletes), ('disables', disables), ('enables', enables), ('modifies', modifies), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/__init__.py new file mode 100644 index 000000000..7759e40dd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/__init__.py @@ -0,0 +1,435 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_point(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/statistics/tunnel-termination-point. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains statistics attributes at the TE TTP level. + """ + __slots__ = ('_path_helper', '_extmethods', '__disables','__enables','__maintenance_clears','__maintenance_sets','__modifies','__downs','__ups','__in_service_clears','__in_service_sets',) + + _yang_name = 'tunnel-termination-point' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__downs = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__ups = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__in_service_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + self.__in_service_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'statistics', 'tunnel-termination-point'] + + def _get_disables(self): + """ + Getter method for disables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/disables (yang:counter32) + + YANG Description: Number of times that a TTP was disabled. + """ + return self.__disables + + def _set_disables(self, v, load=False): + """ + Setter method for disables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/disables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_disables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disables() directly. + + YANG Description: Number of times that a TTP was disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__disables = t + if hasattr(self, '_set'): + self._set() + + def _unset_disables(self): + self.__disables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="disables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_enables(self): + """ + Getter method for enables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/enables (yang:counter32) + + YANG Description: Number of times that a TTP was enabled. + """ + return self.__enables + + def _set_enables(self, v, load=False): + """ + Setter method for enables, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/enables (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_enables is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enables() directly. + + YANG Description: Number of times that a TTP was enabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enables must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__enables = t + if hasattr(self, '_set'): + self._set() + + def _unset_enables(self): + self.__enables = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="enables", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_clears(self): + """ + Getter method for maintenance_clears, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/maintenance_clears (yang:counter32) + + YANG Description: Number of times that a TTP was taken out of maintenance. + """ + return self.__maintenance_clears + + def _set_maintenance_clears(self, v, load=False): + """ + Setter method for maintenance_clears, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/maintenance_clears (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_clears is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_clears() directly. + + YANG Description: Number of times that a TTP was taken out of maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_clears must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_clears = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_clears(self): + self.__maintenance_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_maintenance_sets(self): + """ + Getter method for maintenance_sets, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/maintenance_sets (yang:counter32) + + YANG Description: Number of times that a TTP was put in maintenance. + """ + return self.__maintenance_sets + + def _set_maintenance_sets(self, v, load=False): + """ + Setter method for maintenance_sets, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/maintenance_sets (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_maintenance_sets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maintenance_sets() directly. + + YANG Description: Number of times that a TTP was put in maintenance. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maintenance_sets must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__maintenance_sets = t + if hasattr(self, '_set'): + self._set() + + def _unset_maintenance_sets(self): + self.__maintenance_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="maintenance-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_modifies(self): + """ + Getter method for modifies, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/modifies (yang:counter32) + + YANG Description: Number of times that a TTP was modified. + """ + return self.__modifies + + def _set_modifies(self, v, load=False): + """ + Setter method for modifies, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/modifies (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_modifies is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_modifies() directly. + + YANG Description: Number of times that a TTP was modified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """modifies must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__modifies = t + if hasattr(self, '_set'): + self._set() + + def _unset_modifies(self): + self.__modifies = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="modifies", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_downs(self): + """ + Getter method for downs, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/downs (yang:counter32) + + YANG Description: Number of times that a TTP was set to an operational state +of 'down'. + """ + return self.__downs + + def _set_downs(self, v, load=False): + """ + Setter method for downs, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/downs (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_downs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_downs() directly. + + YANG Description: Number of times that a TTP was set to an operational state +of 'down'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """downs must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__downs = t + if hasattr(self, '_set'): + self._set() + + def _unset_downs(self): + self.__downs = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="downs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_ups(self): + """ + Getter method for ups, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/ups (yang:counter32) + + YANG Description: Number of times that a TTP was set to an operational state +of 'up'. + """ + return self.__ups + + def _set_ups(self, v, load=False): + """ + Setter method for ups, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/ups (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_ups is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ups() directly. + + YANG Description: Number of times that a TTP was set to an operational state +of 'up'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ups must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__ups = t + if hasattr(self, '_set'): + self._set() + + def _unset_ups(self): + self.__ups = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_in_service_clears(self): + """ + Getter method for in_service_clears, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/in_service_clears (yang:counter32) + + YANG Description: Number of times that a TTP was taken out of service +(TE tunnel was released). + """ + return self.__in_service_clears + + def _set_in_service_clears(self, v, load=False): + """ + Setter method for in_service_clears, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/in_service_clears (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_service_clears is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_service_clears() directly. + + YANG Description: Number of times that a TTP was taken out of service +(TE tunnel was released). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_service_clears must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__in_service_clears = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_service_clears(self): + self.__in_service_clears = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-clears", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + + def _get_in_service_sets(self): + """ + Getter method for in_service_sets, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/in_service_sets (yang:counter32) + + YANG Description: Number of times that a TTP was put in service by a TE +tunnel (TE tunnel was set up). + """ + return self.__in_service_sets + + def _set_in_service_sets(self, v, load=False): + """ + Setter method for in_service_sets, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/statistics/tunnel_termination_point/in_service_sets (yang:counter32) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_service_sets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_service_sets() directly. + + YANG Description: Number of times that a TTP was put in service by a TE +tunnel (TE tunnel was set up). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_service_sets must be of a type compatible with yang:counter32""", + 'defined-type': "yang:counter32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False)""", + }) + + self.__in_service_sets = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_service_sets(self): + self.__in_service_sets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="in-service-sets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:counter32', is_config=False) + + disables = __builtin__.property(_get_disables) + enables = __builtin__.property(_get_enables) + maintenance_clears = __builtin__.property(_get_maintenance_clears) + maintenance_sets = __builtin__.property(_get_maintenance_sets) + modifies = __builtin__.property(_get_modifies) + downs = __builtin__.property(_get_downs) + ups = __builtin__.property(_get_ups) + in_service_clears = __builtin__.property(_get_in_service_clears) + in_service_sets = __builtin__.property(_get_in_service_sets) + + + _pyangbind_elements = OrderedDict([('disables', disables), ('enables', enables), ('maintenance_clears', maintenance_clears), ('maintenance_sets', maintenance_sets), ('modifies', modifies), ('downs', downs), ('ups', ups), ('in_service_clears', in_service_clears), ('in_service_sets', in_service_sets), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/__init__.py new file mode 100644 index 000000000..2d4ca8bff --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/__init__.py @@ -0,0 +1,172 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class supporting_tunnel_termination_point(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/te/tunnel-termination-point/supporting-tunnel-termination-point. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Identifies the TTPs on which this TTP depends. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_ref','__tunnel_tp_ref',) + + _yang_name = 'supporting-tunnel-termination-point' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:uri', is_config=True) + self.__tunnel_tp_ref = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'te', 'tunnel-termination-point', 'supporting-tunnel-termination-point'] + + def _get_node_ref(self): + """ + Getter method for node_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/node_ref (inet:uri) + + YANG Description: This leaf identifies the node in which the supporting +TTP is present. +This node is either the supporting node or a node in +an underlay topology. + """ + return self.__node_ref + + def _set_node_ref(self, v, load=False): + """ + Setter method for node_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/node_ref (inet:uri) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_ref() directly. + + YANG Description: This leaf identifies the node in which the supporting +TTP is present. +This node is either the supporting node or a node in +an underlay topology. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:uri', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_ref must be of a type compatible with inet:uri""", + 'defined-type': "inet:uri", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:uri', is_config=True)""", + }) + + self.__node_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_ref(self): + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:uri', is_config=True) + + + def _get_tunnel_tp_ref(self): + """ + Getter method for tunnel_tp_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/tunnel_tp_ref (binary) + + YANG Description: Reference to a TTP that is in either the supporting node +or a node in an underlay topology. + """ + return self.__tunnel_tp_ref + + def _set_tunnel_tp_ref(self, v, load=False): + """ + Setter method for tunnel_tp_ref, mapped from YANG variable /networks/network/node/te/tunnel_termination_point/supporting_tunnel_termination_point/tunnel_tp_ref (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_tp_ref() directly. + + YANG Description: Reference to a TTP that is in either the supporting node +or a node in an underlay topology. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_tp_ref must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__tunnel_tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_tp_ref(self): + self.__tunnel_tp_ref = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="tunnel-tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + node_ref = __builtin__.property(_get_node_ref, _set_node_ref) + tunnel_tp_ref = __builtin__.property(_get_tunnel_tp_ref, _set_tunnel_tp_ref) + + + _pyangbind_elements = OrderedDict([('node_ref', node_ref), ('tunnel_tp_ref', tunnel_tp_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/__init__.py new file mode 100644 index 000000000..1665caff1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/__init__.py @@ -0,0 +1,339 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import supporting_termination_point +from . import te +from . import eth_svc +from . import eth_link_tp +class termination_point(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A termination point can terminate a link. +Depending on the type of topology, a termination point +could, for example, refer to a port or an interface. + """ + __slots__ = ('_path_helper', '_extmethods', '__tp_id','__supporting_termination_point','__te_tp_id','__te','__eth_svc','__eth_link_tp',) + + _yang_name = 'termination-point' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tp_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='tp-id', is_config=True) + self.__supporting_termination_point = YANGDynClass(base=YANGListType("network_ref node_ref tp_ref",supporting_termination_point.supporting_termination_point, yang_name="supporting-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref tp-ref', extensions=None), is_container='list', yang_name="supporting-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + self.__te_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="te-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__eth_svc = YANGDynClass(base=eth_svc.eth_svc, is_container='container', yang_name="eth-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__eth_link_tp = YANGDynClass(base=eth_link_tp.eth_link_tp, is_container='container', yang_name="eth-link-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point'] + + def _get_tp_id(self): + """ + Getter method for tp_id, mapped from YANG variable /networks/network/node/termination_point/tp_id (tp-id) + + YANG Description: Termination point identifier. + """ + return self.__tp_id + + def _set_tp_id(self, v, load=False): + """ + Setter method for tp_id, mapped from YANG variable /networks/network/node/termination_point/tp_id (tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_id() directly. + + YANG Description: Termination point identifier. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_id must be of a type compatible with tp-id""", + 'defined-type': "ietf-network-topology:tp-id", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='tp-id', is_config=True)""", + }) + + self.__tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_id(self): + self.__tp_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='tp-id', is_config=True) + + + def _get_supporting_termination_point(self): + """ + Getter method for supporting_termination_point, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point (list) + + YANG Description: This list identifies any termination points on which a +given termination point depends or onto which it maps. +Those termination points will themselves be contained +in a supporting node. This dependency information can be +inferred from the dependencies between links. Therefore, +this item is not separately configurable. Hence, no +corresponding constraint needs to be articulated. +The corresponding information is simply provided by the +implementing system. + """ + return self.__supporting_termination_point + + def _set_supporting_termination_point(self, v, load=False): + """ + Setter method for supporting_termination_point, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_supporting_termination_point is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supporting_termination_point() directly. + + YANG Description: This list identifies any termination points on which a +given termination point depends or onto which it maps. +Those termination points will themselves be contained +in a supporting node. This dependency information can be +inferred from the dependencies between links. Therefore, +this item is not separately configurable. Hence, no +corresponding constraint needs to be articulated. +The corresponding information is simply provided by the +implementing system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("network_ref node_ref tp_ref",supporting_termination_point.supporting_termination_point, yang_name="supporting-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref tp-ref', extensions=None), is_container='list', yang_name="supporting-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supporting_termination_point must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("network_ref node_ref tp_ref",supporting_termination_point.supporting_termination_point, yang_name="supporting-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref tp-ref', extensions=None), is_container='list', yang_name="supporting-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True)""", + }) + + self.__supporting_termination_point = t + if hasattr(self, '_set'): + self._set() + + def _unset_supporting_termination_point(self): + self.__supporting_termination_point = YANGDynClass(base=YANGListType("network_ref node_ref tp_ref",supporting_termination_point.supporting_termination_point, yang_name="supporting-termination-point", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='network-ref node-ref tp-ref', extensions=None), is_container='list', yang_name="supporting-termination-point", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='list', is_config=True) + + + def _get_te_tp_id(self): + """ + Getter method for te_tp_id, mapped from YANG variable /networks/network/node/termination_point/te_tp_id (te-types:te-tp-id) + + YANG Description: An identifier that uniquely identifies a TE termination +point. + """ + return self.__te_tp_id + + def _set_te_tp_id(self, v, load=False): + """ + Setter method for te_tp_id, mapped from YANG variable /networks/network/node/termination_point/te_tp_id (te-types:te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_tp_id() directly. + + YANG Description: An identifier that uniquely identifies a TE termination +point. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="te-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_tp_id must be of a type compatible with te-types:te-tp-id""", + 'defined-type': "te-types:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="te-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True)""", + }) + + self.__te_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_tp_id(self): + self.__te_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="te-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + + + def _get_te(self): + """ + Getter method for te, mapped from YANG variable /networks/network/node/termination_point/te (container) + + YANG Description: Indicates TE support. + """ + return self.__te + + def _set_te(self, v, load=False): + """ + Setter method for te, mapped from YANG variable /networks/network/node/termination_point/te (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te() directly. + + YANG Description: Indicates TE support. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te = t + if hasattr(self, '_set'): + self._set() + + def _unset_te(self): + self.__te = YANGDynClass(base=te.te, is_container='container', yang_name="te", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_eth_svc(self): + """ + Getter method for eth_svc, mapped from YANG variable /networks/network/node/termination_point/eth_svc (container) + + YANG Description: ETH LTP Service attributes. + """ + return self.__eth_svc + + def _set_eth_svc(self, v, load=False): + """ + Setter method for eth_svc, mapped from YANG variable /networks/network/node/termination_point/eth_svc (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_svc is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_svc() directly. + + YANG Description: ETH LTP Service attributes. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=eth_svc.eth_svc, is_container='container', yang_name="eth-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_svc must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=eth_svc.eth_svc, is_container='container', yang_name="eth-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__eth_svc = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_svc(self): + self.__eth_svc = YANGDynClass(base=eth_svc.eth_svc, is_container='container', yang_name="eth-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_eth_link_tp(self): + """ + Getter method for eth_link_tp, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp (container) + + YANG Description: Attributes of the Ethernet Link Termination Point (LTP). + """ + return self.__eth_link_tp + + def _set_eth_link_tp(self, v, load=False): + """ + Setter method for eth_link_tp, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_link_tp is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_link_tp() directly. + + YANG Description: Attributes of the Ethernet Link Termination Point (LTP). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=eth_link_tp.eth_link_tp, is_container='container', yang_name="eth-link-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_link_tp must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=eth_link_tp.eth_link_tp, is_container='container', yang_name="eth-link-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__eth_link_tp = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_link_tp(self): + self.__eth_link_tp = YANGDynClass(base=eth_link_tp.eth_link_tp, is_container='container', yang_name="eth-link-tp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + tp_id = __builtin__.property(_get_tp_id, _set_tp_id) + supporting_termination_point = __builtin__.property(_get_supporting_termination_point, _set_supporting_termination_point) + te_tp_id = __builtin__.property(_get_te_tp_id, _set_te_tp_id) + te = __builtin__.property(_get_te, _set_te) + eth_svc = __builtin__.property(_get_eth_svc, _set_eth_svc) + eth_link_tp = __builtin__.property(_get_eth_link_tp, _set_eth_link_tp) + + + _pyangbind_elements = OrderedDict([('tp_id', tp_id), ('supporting_termination_point', supporting_termination_point), ('te_tp_id', te_tp_id), ('te', te), ('eth_svc', eth_svc), ('eth_link_tp', eth_link_tp), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/__init__.py new file mode 100644 index 000000000..d3de63b0f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/__init__.py @@ -0,0 +1,315 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import ingress_egress_bandwidth_profile +from . import ingress_bandwidth_profile +from . import egress_bandwidth_profile +class eth_link_tp(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-link-tp. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the Ethernet Link Termination Point (LTP). + """ + __slots__ = ('_path_helper', '_extmethods', '__ltp_mac_address','__port_vlan_id','__maximum_frame_size','__ingress_egress_bandwidth_profile','__ingress_bandwidth_profile','__egress_bandwidth_profile',) + + _yang_name = 'eth-link-tp' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__ltp_mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="ltp-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='yang:mac-address', is_config=True) + self.__port_vlan_id = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="port-vlan-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__maximum_frame_size = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['64 .. 65535']}), is_leaf=True, yang_name="maximum-frame-size", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + self.__ingress_egress_bandwidth_profile = YANGDynClass(base=ingress_egress_bandwidth_profile.ingress_egress_bandwidth_profile, is_container='container', yang_name="ingress-egress-bandwidth-profile", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__ingress_bandwidth_profile = YANGDynClass(base=ingress_bandwidth_profile.ingress_bandwidth_profile, is_container='container', yang_name="ingress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__egress_bandwidth_profile = YANGDynClass(base=egress_bandwidth_profile.egress_bandwidth_profile, is_container='container', yang_name="egress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-link-tp'] + + def _get_ltp_mac_address(self): + """ + Getter method for ltp_mac_address, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ltp_mac_address (yang:mac-address) + + YANG Description: The MAC address of the Ethernet LTP. + """ + return self.__ltp_mac_address + + def _set_ltp_mac_address(self, v, load=False): + """ + Setter method for ltp_mac_address, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ltp_mac_address (yang:mac-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_ltp_mac_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ltp_mac_address() directly. + + YANG Description: The MAC address of the Ethernet LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="ltp-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='yang:mac-address', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ltp_mac_address must be of a type compatible with yang:mac-address""", + 'defined-type': "yang:mac-address", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="ltp-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='yang:mac-address', is_config=True)""", + }) + + self.__ltp_mac_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_ltp_mac_address(self): + self.__ltp_mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="ltp-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='yang:mac-address', is_config=True) + + + def _get_port_vlan_id(self): + """ + Getter method for port_vlan_id, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/port_vlan_id (etht-types:vlanid) + + YANG Description: The Port VLAN ID of the Ethernet LTP. + """ + return self.__port_vlan_id + + def _set_port_vlan_id(self, v, load=False): + """ + Setter method for port_vlan_id, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/port_vlan_id (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_vlan_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_vlan_id() directly. + + YANG Description: The Port VLAN ID of the Ethernet LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="port-vlan-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_vlan_id must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="port-vlan-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__port_vlan_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_vlan_id(self): + self.__port_vlan_id = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="port-vlan-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_maximum_frame_size(self): + """ + Getter method for maximum_frame_size, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/maximum_frame_size (uint16) + + YANG Description: Maximum frame size + """ + return self.__maximum_frame_size + + def _set_maximum_frame_size(self, v, load=False): + """ + Setter method for maximum_frame_size, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/maximum_frame_size (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_maximum_frame_size is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_maximum_frame_size() directly. + + YANG Description: Maximum frame size + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['64 .. 65535']}), is_leaf=True, yang_name="maximum-frame-size", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """maximum_frame_size must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['64 .. 65535']}), is_leaf=True, yang_name="maximum-frame-size", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__maximum_frame_size = t + if hasattr(self, '_set'): + self._set() + + def _unset_maximum_frame_size(self): + self.__maximum_frame_size = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['64 .. 65535']}), is_leaf=True, yang_name="maximum-frame-size", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + + def _get_ingress_egress_bandwidth_profile(self): + """ + Getter method for ingress_egress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile (container) + + YANG Description: The bandwith profile used in the ingress and egress +direction. + """ + return self.__ingress_egress_bandwidth_profile + + def _set_ingress_egress_bandwidth_profile(self, v, load=False): + """ + Setter method for ingress_egress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ingress_egress_bandwidth_profile is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ingress_egress_bandwidth_profile() directly. + + YANG Description: The bandwith profile used in the ingress and egress +direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ingress_egress_bandwidth_profile.ingress_egress_bandwidth_profile, is_container='container', yang_name="ingress-egress-bandwidth-profile", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ingress_egress_bandwidth_profile must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ingress_egress_bandwidth_profile.ingress_egress_bandwidth_profile, is_container='container', yang_name="ingress-egress-bandwidth-profile", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ingress_egress_bandwidth_profile = t + if hasattr(self, '_set'): + self._set() + + def _unset_ingress_egress_bandwidth_profile(self): + self.__ingress_egress_bandwidth_profile = YANGDynClass(base=ingress_egress_bandwidth_profile.ingress_egress_bandwidth_profile, is_container='container', yang_name="ingress-egress-bandwidth-profile", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_ingress_bandwidth_profile(self): + """ + Getter method for ingress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile (container) + + YANG Description: The bandwidth profile used in the ingress direction. + """ + return self.__ingress_bandwidth_profile + + def _set_ingress_bandwidth_profile(self, v, load=False): + """ + Setter method for ingress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ingress_bandwidth_profile is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ingress_bandwidth_profile() directly. + + YANG Description: The bandwidth profile used in the ingress direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ingress_bandwidth_profile.ingress_bandwidth_profile, is_container='container', yang_name="ingress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ingress_bandwidth_profile must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ingress_bandwidth_profile.ingress_bandwidth_profile, is_container='container', yang_name="ingress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ingress_bandwidth_profile = t + if hasattr(self, '_set'): + self._set() + + def _unset_ingress_bandwidth_profile(self): + self.__ingress_bandwidth_profile = YANGDynClass(base=ingress_bandwidth_profile.ingress_bandwidth_profile, is_container='container', yang_name="ingress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_egress_bandwidth_profile(self): + """ + Getter method for egress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile (container) + + YANG Description: The bandwidth profile used in the egress direction. + """ + return self.__egress_bandwidth_profile + + def _set_egress_bandwidth_profile(self, v, load=False): + """ + Setter method for egress_bandwidth_profile, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_egress_bandwidth_profile is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_egress_bandwidth_profile() directly. + + YANG Description: The bandwidth profile used in the egress direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=egress_bandwidth_profile.egress_bandwidth_profile, is_container='container', yang_name="egress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """egress_bandwidth_profile must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=egress_bandwidth_profile.egress_bandwidth_profile, is_container='container', yang_name="egress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__egress_bandwidth_profile = t + if hasattr(self, '_set'): + self._set() + + def _unset_egress_bandwidth_profile(self): + self.__egress_bandwidth_profile = YANGDynClass(base=egress_bandwidth_profile.egress_bandwidth_profile, is_container='container', yang_name="egress-bandwidth-profile", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + ltp_mac_address = __builtin__.property(_get_ltp_mac_address, _set_ltp_mac_address) + port_vlan_id = __builtin__.property(_get_port_vlan_id, _set_port_vlan_id) + maximum_frame_size = __builtin__.property(_get_maximum_frame_size, _set_maximum_frame_size) + ingress_egress_bandwidth_profile = __builtin__.property(_get_ingress_egress_bandwidth_profile, _set_ingress_egress_bandwidth_profile) + ingress_bandwidth_profile = __builtin__.property(_get_ingress_bandwidth_profile, _set_ingress_bandwidth_profile) + egress_bandwidth_profile = __builtin__.property(_get_egress_bandwidth_profile, _set_egress_bandwidth_profile) + + __choices__ = {'direction': {'symmetrical': ['ingress_egress_bandwidth_profile'], 'asymmetrical': ['ingress_bandwidth_profile', 'egress_bandwidth_profile']}} + _pyangbind_elements = OrderedDict([('ltp_mac_address', ltp_mac_address), ('port_vlan_id', port_vlan_id), ('maximum_frame_size', maximum_frame_size), ('ingress_egress_bandwidth_profile', ingress_egress_bandwidth_profile), ('ingress_bandwidth_profile', ingress_bandwidth_profile), ('egress_bandwidth_profile', egress_bandwidth_profile), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/__init__.py new file mode 100644 index 000000000..f617b9577 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/__init__.py @@ -0,0 +1,355 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class egress_bandwidth_profile(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-link-tp/egress-bandwidth-profile. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The bandwidth profile used in the egress direction. + """ + __slots__ = ('_path_helper', '_extmethods', '__bandwidth_profile_type','__CIR','__CBS','__EIR','__EBS','__color_aware','__coupling_flag',) + + _yang_name = 'egress-bandwidth-profile' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-link-tp', 'egress-bandwidth-profile'] + + def _get_bandwidth_profile_type(self): + """ + Getter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + + YANG Description: The type of bandwidth profile. + """ + return self.__bandwidth_profile_type + + def _set_bandwidth_profile_type(self, v, load=False): + """ + Setter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth_profile_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth_profile_type() directly. + + YANG Description: The type of bandwidth profile. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth_profile_type must be of a type compatible with etht-types:bandwidth-profile-type""", + 'defined-type': "etht-types:bandwidth-profile-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True)""", + }) + + self.__bandwidth_profile_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth_profile_type(self): + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + + + def _get_CIR(self): + """ + Getter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/CIR (uint64) + + YANG Description: Committed Information Rate in Kbps + """ + return self.__CIR + + def _set_CIR(self, v, load=False): + """ + Setter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/CIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CIR() directly. + + YANG Description: Committed Information Rate in Kbps + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_CIR(self): + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_CBS(self): + """ + Getter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/CBS (uint64) + + YANG Description: Committed Burst Size in in KBytes + """ + return self.__CBS + + def _set_CBS(self, v, load=False): + """ + Setter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/CBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CBS() directly. + + YANG Description: Committed Burst Size in in KBytes + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_CBS(self): + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EIR(self): + """ + Getter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/EIR (uint64) + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + return self.__EIR + + def _set_EIR(self, v, load=False): + """ + Setter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/EIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EIR() directly. + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_EIR(self): + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EBS(self): + """ + Getter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/EBS (uint64) + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + return self.__EBS + + def _set_EBS(self, v, load=False): + """ + Setter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/EBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EBS() directly. + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_EBS(self): + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_color_aware(self): + """ + Getter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/color_aware (boolean) + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + return self.__color_aware + + def _set_color_aware(self, v, load=False): + """ + Setter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/color_aware (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_color_aware is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_color_aware() directly. + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """color_aware must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__color_aware = t + if hasattr(self, '_set'): + self._set() + + def _unset_color_aware(self): + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_coupling_flag(self): + """ + Getter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/coupling_flag (boolean) + + YANG Description: Coupling Flag. + """ + return self.__coupling_flag + + def _set_coupling_flag(self, v, load=False): + """ + Setter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/egress_bandwidth_profile/coupling_flag (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_coupling_flag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_coupling_flag() directly. + + YANG Description: Coupling Flag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """coupling_flag must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__coupling_flag = t + if hasattr(self, '_set'): + self._set() + + def _unset_coupling_flag(self): + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + bandwidth_profile_type = __builtin__.property(_get_bandwidth_profile_type, _set_bandwidth_profile_type) + CIR = __builtin__.property(_get_CIR, _set_CIR) + CBS = __builtin__.property(_get_CBS, _set_CBS) + EIR = __builtin__.property(_get_EIR, _set_EIR) + EBS = __builtin__.property(_get_EBS, _set_EBS) + color_aware = __builtin__.property(_get_color_aware, _set_color_aware) + coupling_flag = __builtin__.property(_get_coupling_flag, _set_coupling_flag) + + __choices__ = {'direction': {'asymmetrical': ['bandwidth_profile_type', 'CIR', 'CBS', 'EIR', 'EBS', 'color_aware', 'coupling_flag']}} + _pyangbind_elements = OrderedDict([('bandwidth_profile_type', bandwidth_profile_type), ('CIR', CIR), ('CBS', CBS), ('EIR', EIR), ('EBS', EBS), ('color_aware', color_aware), ('coupling_flag', coupling_flag), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/__init__.py new file mode 100644 index 000000000..a3ec08716 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/__init__.py @@ -0,0 +1,355 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ingress_bandwidth_profile(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-link-tp/ingress-bandwidth-profile. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The bandwidth profile used in the ingress direction. + """ + __slots__ = ('_path_helper', '_extmethods', '__bandwidth_profile_type','__CIR','__CBS','__EIR','__EBS','__color_aware','__coupling_flag',) + + _yang_name = 'ingress-bandwidth-profile' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-link-tp', 'ingress-bandwidth-profile'] + + def _get_bandwidth_profile_type(self): + """ + Getter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + + YANG Description: The type of bandwidth profile. + """ + return self.__bandwidth_profile_type + + def _set_bandwidth_profile_type(self, v, load=False): + """ + Setter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth_profile_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth_profile_type() directly. + + YANG Description: The type of bandwidth profile. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth_profile_type must be of a type compatible with etht-types:bandwidth-profile-type""", + 'defined-type': "etht-types:bandwidth-profile-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True)""", + }) + + self.__bandwidth_profile_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth_profile_type(self): + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + + + def _get_CIR(self): + """ + Getter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/CIR (uint64) + + YANG Description: Committed Information Rate in Kbps + """ + return self.__CIR + + def _set_CIR(self, v, load=False): + """ + Setter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/CIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CIR() directly. + + YANG Description: Committed Information Rate in Kbps + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_CIR(self): + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_CBS(self): + """ + Getter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/CBS (uint64) + + YANG Description: Committed Burst Size in in KBytes + """ + return self.__CBS + + def _set_CBS(self, v, load=False): + """ + Setter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/CBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CBS() directly. + + YANG Description: Committed Burst Size in in KBytes + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_CBS(self): + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EIR(self): + """ + Getter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/EIR (uint64) + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + return self.__EIR + + def _set_EIR(self, v, load=False): + """ + Setter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/EIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EIR() directly. + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_EIR(self): + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EBS(self): + """ + Getter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/EBS (uint64) + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + return self.__EBS + + def _set_EBS(self, v, load=False): + """ + Setter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/EBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EBS() directly. + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_EBS(self): + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_color_aware(self): + """ + Getter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/color_aware (boolean) + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + return self.__color_aware + + def _set_color_aware(self, v, load=False): + """ + Setter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/color_aware (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_color_aware is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_color_aware() directly. + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """color_aware must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__color_aware = t + if hasattr(self, '_set'): + self._set() + + def _unset_color_aware(self): + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_coupling_flag(self): + """ + Getter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/coupling_flag (boolean) + + YANG Description: Coupling Flag. + """ + return self.__coupling_flag + + def _set_coupling_flag(self, v, load=False): + """ + Setter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_bandwidth_profile/coupling_flag (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_coupling_flag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_coupling_flag() directly. + + YANG Description: Coupling Flag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """coupling_flag must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__coupling_flag = t + if hasattr(self, '_set'): + self._set() + + def _unset_coupling_flag(self): + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'asymmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + bandwidth_profile_type = __builtin__.property(_get_bandwidth_profile_type, _set_bandwidth_profile_type) + CIR = __builtin__.property(_get_CIR, _set_CIR) + CBS = __builtin__.property(_get_CBS, _set_CBS) + EIR = __builtin__.property(_get_EIR, _set_EIR) + EBS = __builtin__.property(_get_EBS, _set_EBS) + color_aware = __builtin__.property(_get_color_aware, _set_color_aware) + coupling_flag = __builtin__.property(_get_coupling_flag, _set_coupling_flag) + + __choices__ = {'direction': {'asymmetrical': ['bandwidth_profile_type', 'CIR', 'CBS', 'EIR', 'EBS', 'color_aware', 'coupling_flag']}} + _pyangbind_elements = OrderedDict([('bandwidth_profile_type', bandwidth_profile_type), ('CIR', CIR), ('CBS', CBS), ('EIR', EIR), ('EBS', EBS), ('color_aware', color_aware), ('coupling_flag', coupling_flag), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/__init__.py new file mode 100644 index 000000000..87d611cce --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/__init__.py @@ -0,0 +1,356 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ingress_egress_bandwidth_profile(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-link-tp/ingress-egress-bandwidth-profile. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The bandwith profile used in the ingress and egress +direction. + """ + __slots__ = ('_path_helper', '_extmethods', '__bandwidth_profile_type','__CIR','__CBS','__EIR','__EBS','__color_aware','__coupling_flag',) + + _yang_name = 'ingress-egress-bandwidth-profile' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-link-tp', 'ingress-egress-bandwidth-profile'] + + def _get_bandwidth_profile_type(self): + """ + Getter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + + YANG Description: The type of bandwidth profile. + """ + return self.__bandwidth_profile_type + + def _set_bandwidth_profile_type(self, v, load=False): + """ + Setter method for bandwidth_profile_type, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/bandwidth_profile_type (etht-types:bandwidth-profile-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth_profile_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth_profile_type() directly. + + YANG Description: The type of bandwidth profile. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth_profile_type must be of a type compatible with etht-types:bandwidth-profile-type""", + 'defined-type': "etht-types:bandwidth-profile-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True)""", + }) + + self.__bandwidth_profile_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth_profile_type(self): + self.__bandwidth_profile_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:mef-10-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2697-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-2698-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:rfc-4115-bwp': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="bandwidth-profile-type", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:bandwidth-profile-type', is_config=True) + + + def _get_CIR(self): + """ + Getter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/CIR (uint64) + + YANG Description: Committed Information Rate in Kbps + """ + return self.__CIR + + def _set_CIR(self, v, load=False): + """ + Setter method for CIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/CIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CIR() directly. + + YANG Description: Committed Information Rate in Kbps + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_CIR(self): + self.__CIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_CBS(self): + """ + Getter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/CBS (uint64) + + YANG Description: Committed Burst Size in in KBytes + """ + return self.__CBS + + def _set_CBS(self, v, load=False): + """ + Setter method for CBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/CBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_CBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_CBS() directly. + + YANG Description: Committed Burst Size in in KBytes + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """CBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__CBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_CBS(self): + self.__CBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="CBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EIR(self): + """ + Getter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/EIR (uint64) + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + return self.__EIR + + def _set_EIR(self, v, load=False): + """ + Setter method for EIR, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/EIR (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EIR is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EIR() directly. + + YANG Description: Excess Information Rate in Kbps +In case of RFC 2698, PIR = CIR + EIR + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EIR must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EIR = t + if hasattr(self, '_set'): + self._set() + + def _unset_EIR(self): + self.__EIR = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EIR", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_EBS(self): + """ + Getter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/EBS (uint64) + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + return self.__EBS + + def _set_EBS(self, v, load=False): + """ + Setter method for EBS, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/EBS (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_EBS is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_EBS() directly. + + YANG Description: Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """EBS must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__EBS = t + if hasattr(self, '_set'): + self._set() + + def _unset_EBS(self): + self.__EBS = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="EBS", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + + def _get_color_aware(self): + """ + Getter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/color_aware (boolean) + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + return self.__color_aware + + def _set_color_aware(self, v, load=False): + """ + Setter method for color_aware, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/color_aware (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_color_aware is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_color_aware() directly. + + YANG Description: Indicates weather the color-mode is +color-aware or color-blind. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """color_aware must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__color_aware = t + if hasattr(self, '_set'): + self._set() + + def _unset_color_aware(self): + self.__color_aware = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="color-aware", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_coupling_flag(self): + """ + Getter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/coupling_flag (boolean) + + YANG Description: Coupling Flag. + """ + return self.__coupling_flag + + def _set_coupling_flag(self, v, load=False): + """ + Setter method for coupling_flag, mapped from YANG variable /networks/network/node/termination_point/eth_link_tp/ingress_egress_bandwidth_profile/coupling_flag (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_coupling_flag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_coupling_flag() directly. + + YANG Description: Coupling Flag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """coupling_flag must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__coupling_flag = t + if hasattr(self, '_set'): + self._set() + + def _unset_coupling_flag(self): + self.__coupling_flag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="coupling-flag", parent=self, choice=('direction', 'symmetrical'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + bandwidth_profile_type = __builtin__.property(_get_bandwidth_profile_type, _set_bandwidth_profile_type) + CIR = __builtin__.property(_get_CIR, _set_CIR) + CBS = __builtin__.property(_get_CBS, _set_CBS) + EIR = __builtin__.property(_get_EIR, _set_EIR) + EBS = __builtin__.property(_get_EBS, _set_EBS) + color_aware = __builtin__.property(_get_color_aware, _set_color_aware) + coupling_flag = __builtin__.property(_get_coupling_flag, _set_coupling_flag) + + __choices__ = {'direction': {'symmetrical': ['bandwidth_profile_type', 'CIR', 'CBS', 'EIR', 'EBS', 'color_aware', 'coupling_flag']}} + _pyangbind_elements = OrderedDict([('bandwidth_profile_type', bandwidth_profile_type), ('CIR', CIR), ('CBS', CBS), ('EIR', EIR), ('EBS', EBS), ('color_aware', color_aware), ('coupling_flag', coupling_flag), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/__init__.py new file mode 100644 index 000000000..940aa4ef9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import supported_classification +from . import supported_vlan_operations +class eth_svc(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: ETH LTP Service attributes. + """ + __slots__ = ('_path_helper', '_extmethods', '__supported_classification','__supported_vlan_operations',) + + _yang_name = 'eth-svc' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__supported_classification = YANGDynClass(base=supported_classification.supported_classification, is_container='container', yang_name="supported-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__supported_vlan_operations = YANGDynClass(base=supported_vlan_operations.supported_vlan_operations, is_container='container', yang_name="supported-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc'] + + def _get_supported_classification(self): + """ + Getter method for supported_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification (container) + + YANG Description: Service classification capability supported by the +Ethernet Link Termination Point (LTP). + """ + return self.__supported_classification + + def _set_supported_classification(self, v, load=False): + """ + Setter method for supported_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_classification is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_classification() directly. + + YANG Description: Service classification capability supported by the +Ethernet Link Termination Point (LTP). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=supported_classification.supported_classification, is_container='container', yang_name="supported-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_classification must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=supported_classification.supported_classification, is_container='container', yang_name="supported-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__supported_classification = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_classification(self): + self.__supported_classification = YANGDynClass(base=supported_classification.supported_classification, is_container='container', yang_name="supported-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_supported_vlan_operations(self): + """ + Getter method for supported_vlan_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations (container) + + YANG Description: Reports the VLAN operations supported by the ETH LTP. + """ + return self.__supported_vlan_operations + + def _set_supported_vlan_operations(self, v, load=False): + """ + Setter method for supported_vlan_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_vlan_operations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_vlan_operations() directly. + + YANG Description: Reports the VLAN operations supported by the ETH LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=supported_vlan_operations.supported_vlan_operations, is_container='container', yang_name="supported-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_vlan_operations must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=supported_vlan_operations.supported_vlan_operations, is_container='container', yang_name="supported-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__supported_vlan_operations = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_vlan_operations(self): + self.__supported_vlan_operations = YANGDynClass(base=supported_vlan_operations.supported_vlan_operations, is_container='container', yang_name="supported-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + supported_classification = __builtin__.property(_get_supported_classification, _set_supported_classification) + supported_vlan_operations = __builtin__.property(_get_supported_vlan_operations, _set_supported_vlan_operations) + + + _pyangbind_elements = OrderedDict([('supported_classification', supported_classification), ('supported_vlan_operations', supported_vlan_operations), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/__init__.py new file mode 100644 index 000000000..5a244125d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/__init__.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import vlan_classification +class supported_classification(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-classification. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Service classification capability supported by the +Ethernet Link Termination Point (LTP). + """ + __slots__ = ('_path_helper', '_extmethods', '__port_classification','__vlan_classification',) + + _yang_name = 'supported-classification' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__port_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="port-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__vlan_classification = YANGDynClass(base=vlan_classification.vlan_classification, is_container='container', yang_name="vlan-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-classification'] + + def _get_port_classification(self): + """ + Getter method for port_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/port_classification (boolean) + + YANG Description: Indicates that the ETH LTP support port-based service +classification. + """ + return self.__port_classification + + def _set_port_classification(self, v, load=False): + """ + Setter method for port_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/port_classification (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_classification is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_classification() directly. + + YANG Description: Indicates that the ETH LTP support port-based service +classification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="port-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_classification must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="port-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__port_classification = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_classification(self): + self.__port_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="port-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_vlan_classification(self): + """ + Getter method for vlan_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification (container) + + YANG Description: Service classification capabilities based on the VLAN +tag(s) supported by the ETH LTP. + """ + return self.__vlan_classification + + def _set_vlan_classification(self, v, load=False): + """ + Setter method for vlan_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_classification is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_classification() directly. + + YANG Description: Service classification capabilities based on the VLAN +tag(s) supported by the ETH LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=vlan_classification.vlan_classification, is_container='container', yang_name="vlan-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_classification must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=vlan_classification.vlan_classification, is_container='container', yang_name="vlan-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__vlan_classification = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_classification(self): + self.__vlan_classification = YANGDynClass(base=vlan_classification.vlan_classification, is_container='container', yang_name="vlan-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + port_classification = __builtin__.property(_get_port_classification, _set_port_classification) + vlan_classification = __builtin__.property(_get_vlan_classification, _set_vlan_classification) + + + _pyangbind_elements = OrderedDict([('port_classification', port_classification), ('vlan_classification', vlan_classification), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/__init__.py new file mode 100644 index 000000000..fa8bc5167 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/__init__.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import outer_tag +from . import second_tag +class vlan_classification(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-classification/vlan-classification. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Service classification capabilities based on the VLAN +tag(s) supported by the ETH LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__vlan_tag_classification','__outer_tag','__second_tag',) + + _yang_name = 'vlan-classification' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__vlan_tag_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__outer_tag = YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__second_tag = YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-classification', 'vlan-classification'] + + def _get_vlan_tag_classification(self): + """ + Getter method for vlan_tag_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/vlan_tag_classification (boolean) + + YANG Description: Indicates that the ETH LTP supports VLAN service +classification. + """ + return self.__vlan_tag_classification + + def _set_vlan_tag_classification(self, v, load=False): + """ + Setter method for vlan_tag_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/vlan_tag_classification (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_tag_classification is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_tag_classification() directly. + + YANG Description: Indicates that the ETH LTP supports VLAN service +classification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="vlan-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_tag_classification must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__vlan_tag_classification = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_tag_classification(self): + self.__vlan_tag_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_outer_tag(self): + """ + Getter method for outer_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag (container) + + YANG Description: Service classification capabilities based on the outer +VLAN tag, supported by the ETH LTP. + """ + return self.__outer_tag + + def _set_outer_tag(self, v, load=False): + """ + Setter method for outer_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_outer_tag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_outer_tag() directly. + + YANG Description: Service classification capabilities based on the outer +VLAN tag, supported by the ETH LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """outer_tag must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__outer_tag = t + if hasattr(self, '_set'): + self._set() + + def _unset_outer_tag(self): + self.__outer_tag = YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_second_tag(self): + """ + Getter method for second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag (container) + + YANG Description: Service classification capabilities based on the second +VLAN tag, supported by the ETH LTP. + """ + return self.__second_tag + + def _set_second_tag(self, v, load=False): + """ + Setter method for second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_second_tag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_second_tag() directly. + + YANG Description: Service classification capabilities based on the second +VLAN tag, supported by the ETH LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """second_tag must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__second_tag = t + if hasattr(self, '_set'): + self._set() + + def _unset_second_tag(self): + self.__second_tag = YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + vlan_tag_classification = __builtin__.property(_get_vlan_tag_classification, _set_vlan_tag_classification) + outer_tag = __builtin__.property(_get_outer_tag, _set_outer_tag) + second_tag = __builtin__.property(_get_second_tag, _set_second_tag) + + + _pyangbind_elements = OrderedDict([('vlan_tag_classification', vlan_tag_classification), ('outer_tag', outer_tag), ('second_tag', second_tag), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/__init__.py new file mode 100644 index 000000000..83e6e19a2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/__init__.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class outer_tag(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-classification/vlan-classification/outer-tag. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Service classification capabilities based on the outer +VLAN tag, supported by the ETH LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__supported_tag_types','__vlan_bundling','__vlan_range',) + + _yang_name = 'outer-tag' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + self.__vlan_bundling = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-classification', 'vlan-classification', 'outer-tag'] + + def _get_supported_tag_types(self): + """ + Getter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/supported_tag_types (etht-types:eth-tag-classify) + + YANG Description: List of VLAN tag types that can be used for the VLAN +classification. In case VLAN classification is not +supported, the list is empty. + """ + return self.__supported_tag_types + + def _set_supported_tag_types(self, v, load=False): + """ + Setter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/supported_tag_types (etht-types:eth-tag-classify) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_tag_types is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_tag_types() directly. + + YANG Description: List of VLAN tag types that can be used for the VLAN +classification. In case VLAN classification is not +supported, the list is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_tag_types must be of a type compatible with etht-types:eth-tag-classify""", + 'defined-type': "etht-types:eth-tag-classify", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True)""", + }) + + self.__supported_tag_types = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_tag_types(self): + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + + + def _get_vlan_bundling(self): + """ + Getter method for vlan_bundling, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/vlan_bundling (boolean) + + YANG Description: In case VLAN classification is supported, indicates whether +VLAN bundling classification is also supported. + """ + return self.__vlan_bundling + + def _set_vlan_bundling(self, v, load=False): + """ + Setter method for vlan_bundling, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/vlan_bundling (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_bundling is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_bundling() directly. + + YANG Description: In case VLAN classification is supported, indicates whether +VLAN bundling classification is also supported. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_bundling must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__vlan_bundling = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_bundling(self): + self.__vlan_bundling = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_vlan_range(self): + """ + Getter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/vlan_range (etht-types:vid-range-type) + + YANG Description: In case VLAN classification is supported, indicates the +of available VLAN ID values. + """ + return self.__vlan_range + + def _set_vlan_range(self, v, load=False): + """ + Setter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/outer_tag/vlan_range (etht-types:vid-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_range() directly. + + YANG Description: In case VLAN classification is supported, indicates the +of available VLAN ID values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_range must be of a type compatible with etht-types:vid-range-type""", + 'defined-type': "etht-types:vid-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True)""", + }) + + self.__vlan_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_range(self): + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + supported_tag_types = __builtin__.property(_get_supported_tag_types, _set_supported_tag_types) + vlan_bundling = __builtin__.property(_get_vlan_bundling, _set_vlan_bundling) + vlan_range = __builtin__.property(_get_vlan_range, _set_vlan_range) + + + _pyangbind_elements = OrderedDict([('supported_tag_types', supported_tag_types), ('vlan_bundling', vlan_bundling), ('vlan_range', vlan_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/__init__.py new file mode 100644 index 000000000..98c6f2462 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/__init__.py @@ -0,0 +1,243 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class second_tag(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-classification/vlan-classification/second-tag. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Service classification capabilities based on the second +VLAN tag, supported by the ETH LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__second_tag_classification','__supported_tag_types','__vlan_bundling','__vlan_range',) + + _yang_name = 'second-tag' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__second_tag_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="second-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + self.__vlan_bundling = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-classification', 'vlan-classification', 'second-tag'] + + def _get_second_tag_classification(self): + """ + Getter method for second_tag_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/second_tag_classification (boolean) + + YANG Description: Indicates that the ETH LTP support VLAN service +classification based on the second VLAN tag. + """ + return self.__second_tag_classification + + def _set_second_tag_classification(self, v, load=False): + """ + Setter method for second_tag_classification, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/second_tag_classification (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_second_tag_classification is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_second_tag_classification() directly. + + YANG Description: Indicates that the ETH LTP support VLAN service +classification based on the second VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="second-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """second_tag_classification must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="second-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__second_tag_classification = t + if hasattr(self, '_set'): + self._set() + + def _unset_second_tag_classification(self): + self.__second_tag_classification = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="second-tag-classification", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_supported_tag_types(self): + """ + Getter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/supported_tag_types (etht-types:eth-tag-classify) + + YANG Description: List of VLAN tag types that can be used for the VLAN +classification. In case VLAN classification is not +supported, the list is empty. + """ + return self.__supported_tag_types + + def _set_supported_tag_types(self, v, load=False): + """ + Setter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/supported_tag_types (etht-types:eth-tag-classify) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_tag_types is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_tag_types() directly. + + YANG Description: List of VLAN tag types that can be used for the VLAN +classification. In case VLAN classification is not +supported, the list is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_tag_types must be of a type compatible with etht-types:eth-tag-classify""", + 'defined-type': "etht-types:eth-tag-classify", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True)""", + }) + + self.__supported_tag_types = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_tag_types(self): + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:classify-s-or-c-vlan': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-classify', is_config=True) + + + def _get_vlan_bundling(self): + """ + Getter method for vlan_bundling, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/vlan_bundling (boolean) + + YANG Description: In case VLAN classification is supported, indicates whether +VLAN bundling classification is also supported. + """ + return self.__vlan_bundling + + def _set_vlan_bundling(self, v, load=False): + """ + Setter method for vlan_bundling, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/vlan_bundling (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_bundling is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_bundling() directly. + + YANG Description: In case VLAN classification is supported, indicates whether +VLAN bundling classification is also supported. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_bundling must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__vlan_bundling = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_bundling(self): + self.__vlan_bundling = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-bundling", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_vlan_range(self): + """ + Getter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/vlan_range (etht-types:vid-range-type) + + YANG Description: In case VLAN classification is supported, indicates the +of available VLAN ID values. + """ + return self.__vlan_range + + def _set_vlan_range(self, v, load=False): + """ + Setter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_classification/vlan_classification/second_tag/vlan_range (etht-types:vid-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_range() directly. + + YANG Description: In case VLAN classification is supported, indicates the +of available VLAN ID values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_range must be of a type compatible with etht-types:vid-range-type""", + 'defined-type': "etht-types:vid-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True)""", + }) + + self.__vlan_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_range(self): + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + second_tag_classification = __builtin__.property(_get_second_tag_classification, _set_second_tag_classification) + supported_tag_types = __builtin__.property(_get_supported_tag_types, _set_supported_tag_types) + vlan_bundling = __builtin__.property(_get_vlan_bundling, _set_vlan_bundling) + vlan_range = __builtin__.property(_get_vlan_range, _set_vlan_range) + + + _pyangbind_elements = OrderedDict([('second_tag_classification', second_tag_classification), ('supported_tag_types', supported_tag_types), ('vlan_bundling', vlan_bundling), ('vlan_range', vlan_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/__init__.py new file mode 100644 index 000000000..9b5cfc5b2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/__init__.py @@ -0,0 +1,240 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import vlan_pop +from . import vlan_push +class supported_vlan_operations(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-vlan-operations. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Reports the VLAN operations supported by the ETH LTP. + """ + __slots__ = ('_path_helper', '_extmethods', '__asymmetrical_operations','__transparent_vlan_operations','__vlan_pop','__vlan_push',) + + _yang_name = 'supported-vlan-operations' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__asymmetrical_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="asymmetrical-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__transparent_vlan_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="transparent-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__vlan_pop = YANGDynClass(base=vlan_pop.vlan_pop, is_container='container', yang_name="vlan-pop", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__vlan_push = YANGDynClass(base=vlan_push.vlan_push, is_container='container', yang_name="vlan-push", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-vlan-operations'] + + def _get_asymmetrical_operations(self): + """ + Getter method for asymmetrical_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/asymmetrical_operations (boolean) + + YANG Description: Indicates whether the ETH LTP supports also asymmetrical +VLAN operations.It is assumed that symmetrical VLAN +operations are alwyas supported. + """ + return self.__asymmetrical_operations + + def _set_asymmetrical_operations(self, v, load=False): + """ + Setter method for asymmetrical_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/asymmetrical_operations (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_asymmetrical_operations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_asymmetrical_operations() directly. + + YANG Description: Indicates whether the ETH LTP supports also asymmetrical +VLAN operations.It is assumed that symmetrical VLAN +operations are alwyas supported. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="asymmetrical-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """asymmetrical_operations must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="asymmetrical-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__asymmetrical_operations = t + if hasattr(self, '_set'): + self._set() + + def _unset_asymmetrical_operations(self): + self.__asymmetrical_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="asymmetrical-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_transparent_vlan_operations(self): + """ + Getter method for transparent_vlan_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/transparent_vlan_operations (boolean) + + YANG Description: Indicates that the ETH LTP supports transparent +operations. + """ + return self.__transparent_vlan_operations + + def _set_transparent_vlan_operations(self, v, load=False): + """ + Setter method for transparent_vlan_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/transparent_vlan_operations (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_transparent_vlan_operations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_transparent_vlan_operations() directly. + + YANG Description: Indicates that the ETH LTP supports transparent +operations. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="transparent-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """transparent_vlan_operations must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="transparent-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__transparent_vlan_operations = t + if hasattr(self, '_set'): + self._set() + + def _unset_transparent_vlan_operations(self): + self.__transparent_vlan_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="transparent-vlan-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_vlan_pop(self): + """ + Getter method for vlan_pop, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop (container) + + YANG Description: Indicates VLAN pop or swap operations capabilities. + """ + return self.__vlan_pop + + def _set_vlan_pop(self, v, load=False): + """ + Setter method for vlan_pop, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_pop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_pop() directly. + + YANG Description: Indicates VLAN pop or swap operations capabilities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=vlan_pop.vlan_pop, is_container='container', yang_name="vlan-pop", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_pop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=vlan_pop.vlan_pop, is_container='container', yang_name="vlan-pop", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__vlan_pop = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_pop(self): + self.__vlan_pop = YANGDynClass(base=vlan_pop.vlan_pop, is_container='container', yang_name="vlan-pop", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_vlan_push(self): + """ + Getter method for vlan_push, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push (container) + + YANG Description: Indicates VLAN push or swap operations capabilities. + """ + return self.__vlan_push + + def _set_vlan_push(self, v, load=False): + """ + Setter method for vlan_push, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_push is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_push() directly. + + YANG Description: Indicates VLAN push or swap operations capabilities. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=vlan_push.vlan_push, is_container='container', yang_name="vlan-push", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_push must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=vlan_push.vlan_push, is_container='container', yang_name="vlan-push", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__vlan_push = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_push(self): + self.__vlan_push = YANGDynClass(base=vlan_push.vlan_push, is_container='container', yang_name="vlan-push", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + asymmetrical_operations = __builtin__.property(_get_asymmetrical_operations, _set_asymmetrical_operations) + transparent_vlan_operations = __builtin__.property(_get_transparent_vlan_operations, _set_transparent_vlan_operations) + vlan_pop = __builtin__.property(_get_vlan_pop, _set_vlan_pop) + vlan_push = __builtin__.property(_get_vlan_push, _set_vlan_push) + + + _pyangbind_elements = OrderedDict([('asymmetrical_operations', asymmetrical_operations), ('transparent_vlan_operations', transparent_vlan_operations), ('vlan_pop', vlan_pop), ('vlan_push', vlan_push), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/__init__.py new file mode 100644 index 000000000..bfeb46635 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class vlan_pop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-vlan-operations/vlan-pop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates VLAN pop or swap operations capabilities. + """ + __slots__ = ('_path_helper', '_extmethods', '__vlan_pop_operations','__max_pop_tags',) + + _yang_name = 'vlan-pop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__vlan_pop_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-pop-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__max_pop_tags = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..2']}), is_leaf=True, yang_name="max-pop-tags", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-vlan-operations', 'vlan-pop'] + + def _get_vlan_pop_operations(self): + """ + Getter method for vlan_pop_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/vlan_pop_operations (boolean) + + YANG Description: Indicates that the ETH LTP supports VLAN pop or +swap operations. + """ + return self.__vlan_pop_operations + + def _set_vlan_pop_operations(self, v, load=False): + """ + Setter method for vlan_pop_operations, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/vlan_pop_operations (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_pop_operations is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_pop_operations() directly. + + YANG Description: Indicates that the ETH LTP supports VLAN pop or +swap operations. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="vlan-pop-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_pop_operations must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-pop-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__vlan_pop_operations = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_pop_operations(self): + self.__vlan_pop_operations = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-pop-operations", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_max_pop_tags(self): + """ + Getter method for max_pop_tags, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/max_pop_tags (uint8) + + YANG Description: Indicates the maximum number of tags that can be +popped/swapped. + """ + return self.__max_pop_tags + + def _set_max_pop_tags(self, v, load=False): + """ + Setter method for max_pop_tags, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_pop/max_pop_tags (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_pop_tags is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_pop_tags() directly. + + YANG Description: Indicates the maximum number of tags that can be +popped/swapped. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..2']}), is_leaf=True, yang_name="max-pop-tags", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_pop_tags must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..2']}), is_leaf=True, yang_name="max-pop-tags", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__max_pop_tags = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_pop_tags(self): + self.__max_pop_tags = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..2']}), is_leaf=True, yang_name="max-pop-tags", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + vlan_pop_operations = __builtin__.property(_get_vlan_pop_operations, _set_vlan_pop_operations) + max_pop_tags = __builtin__.property(_get_max_pop_tags, _set_max_pop_tags) + + + _pyangbind_elements = OrderedDict([('vlan_pop_operations', vlan_pop_operations), ('max_pop_tags', max_pop_tags), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/__init__.py new file mode 100644 index 000000000..256af6aa1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/__init__.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import outer_tag +from . import second_tag +class vlan_push(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-vlan-operations/vlan-push. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates VLAN push or swap operations capabilities. + """ + __slots__ = ('_path_helper', '_extmethods', '__vlan_push_operation','__outer_tag','__second_tag',) + + _yang_name = 'vlan-push' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__vlan_push_operation = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-push-operation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__outer_tag = YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + self.__second_tag = YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-vlan-operations', 'vlan-push'] + + def _get_vlan_push_operation(self): + """ + Getter method for vlan_push_operation, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/vlan_push_operation (boolean) + + YANG Description: Indicates that the ETH LTP supports VLAN push or +swap operations. + """ + return self.__vlan_push_operation + + def _set_vlan_push_operation(self, v, load=False): + """ + Setter method for vlan_push_operation, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/vlan_push_operation (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_push_operation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_push_operation() directly. + + YANG Description: Indicates that the ETH LTP supports VLAN push or +swap operations. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="vlan-push-operation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_push_operation must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-push-operation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__vlan_push_operation = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_push_operation(self): + self.__vlan_push_operation = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="vlan-push-operation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_outer_tag(self): + """ + Getter method for outer_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag (container) + + YANG Description: Indicates the supported VLAN operation capabilities +on the outer VLAN tag. + """ + return self.__outer_tag + + def _set_outer_tag(self, v, load=False): + """ + Setter method for outer_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_outer_tag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_outer_tag() directly. + + YANG Description: Indicates the supported VLAN operation capabilities +on the outer VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """outer_tag must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__outer_tag = t + if hasattr(self, '_set'): + self._set() + + def _unset_outer_tag(self): + self.__outer_tag = YANGDynClass(base=outer_tag.outer_tag, is_container='container', yang_name="outer-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + + def _get_second_tag(self): + """ + Getter method for second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag (container) + + YANG Description: Indicates the supported VLAN operation capabilities +on the second VLAN tag. + """ + return self.__second_tag + + def _set_second_tag(self, v, load=False): + """ + Setter method for second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_second_tag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_second_tag() directly. + + YANG Description: Indicates the supported VLAN operation capabilities +on the second VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """second_tag must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__second_tag = t + if hasattr(self, '_set'): + self._set() + + def _unset_second_tag(self): + self.__second_tag = YANGDynClass(base=second_tag.second_tag, is_container='container', yang_name="second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + vlan_push_operation = __builtin__.property(_get_vlan_push_operation, _set_vlan_push_operation) + outer_tag = __builtin__.property(_get_outer_tag, _set_outer_tag) + second_tag = __builtin__.property(_get_second_tag, _set_second_tag) + + + _pyangbind_elements = OrderedDict([('vlan_push_operation', vlan_push_operation), ('outer_tag', outer_tag), ('second_tag', second_tag), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/__init__.py new file mode 100644 index 000000000..c468dbf17 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class outer_tag(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-vlan-operations/vlan-push/outer-tag. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates the supported VLAN operation capabilities +on the outer VLAN tag. + """ + __slots__ = ('_path_helper', '_extmethods', '__supported_tag_types','__vlan_range',) + + _yang_name = 'outer-tag' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-vlan-operations', 'vlan-push', 'outer-tag'] + + def _get_supported_tag_types(self): + """ + Getter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/supported_tag_types (etht-types:eth-tag-type) + + YANG Description: List of VLAN tag types that can be used to push or swap a +VLAN tag. In case VLAN push/swap is not supported, the list +is empty. + """ + return self.__supported_tag_types + + def _set_supported_tag_types(self, v, load=False): + """ + Setter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/supported_tag_types (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_tag_types is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_tag_types() directly. + + YANG Description: List of VLAN tag types that can be used to push or swap a +VLAN tag. In case VLAN push/swap is not supported, the list +is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_tag_types must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__supported_tag_types = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_tag_types(self): + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_vlan_range(self): + """ + Getter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/vlan_range (etht-types:vid-range-type) + + YANG Description: In case VLAN push/swap operation is supported, the range +of available VLAN ID values. + """ + return self.__vlan_range + + def _set_vlan_range(self, v, load=False): + """ + Setter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/outer_tag/vlan_range (etht-types:vid-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_range() directly. + + YANG Description: In case VLAN push/swap operation is supported, the range +of available VLAN ID values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_range must be of a type compatible with etht-types:vid-range-type""", + 'defined-type': "etht-types:vid-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True)""", + }) + + self.__vlan_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_range(self): + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + supported_tag_types = __builtin__.property(_get_supported_tag_types, _set_supported_tag_types) + vlan_range = __builtin__.property(_get_vlan_range, _set_vlan_range) + + + _pyangbind_elements = OrderedDict([('supported_tag_types', supported_tag_types), ('vlan_range', vlan_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/__init__.py new file mode 100644 index 000000000..33831d331 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/__init__.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class second_tag(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/eth-svc/supported-vlan-operations/vlan-push/second-tag. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates the supported VLAN operation capabilities +on the second VLAN tag. + """ + __slots__ = ('_path_helper', '_extmethods', '__push_second_tag','__supported_tag_types','__vlan_range',) + + _yang_name = 'second-tag' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__push_second_tag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="push-second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'eth-svc', 'supported-vlan-operations', 'vlan-push', 'second-tag'] + + def _get_push_second_tag(self): + """ + Getter method for push_second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/push_second_tag (boolean) + + YANG Description: Indicates that the ETH LTP supports VLAN push or swap +operations for the second VLAN tag. + """ + return self.__push_second_tag + + def _set_push_second_tag(self, v, load=False): + """ + Setter method for push_second_tag, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/push_second_tag (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_push_second_tag is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_push_second_tag() directly. + + YANG Description: Indicates that the ETH LTP supports VLAN push or swap +operations for the second VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="push-second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """push_second_tag must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="push-second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__push_second_tag = t + if hasattr(self, '_set'): + self._set() + + def _unset_push_second_tag(self): + self.__push_second_tag = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="push-second-tag", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='boolean', is_config=True) + + + def _get_supported_tag_types(self): + """ + Getter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/supported_tag_types (etht-types:eth-tag-type) + + YANG Description: List of VLAN tag types that can be used to push or swap a +VLAN tag. In case VLAN push/swap is not supported, the list +is empty. + """ + return self.__supported_tag_types + + def _set_supported_tag_types(self, v, load=False): + """ + Setter method for supported_tag_types, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/supported_tag_types (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_tag_types is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_tag_types() directly. + + YANG Description: List of VLAN tag types that can be used to push or swap a +VLAN tag. In case VLAN push/swap is not supported, the list +is empty. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_tag_types must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__supported_tag_types = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_tag_types(self): + self.__supported_tag_types = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},)), is_leaf=False, yang_name="supported-tag-types", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_vlan_range(self): + """ + Getter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/vlan_range (etht-types:vid-range-type) + + YANG Description: In case VLAN push/swap operation is supported, the range +of available VLAN ID values. + """ + return self.__vlan_range + + def _set_vlan_range(self, v, load=False): + """ + Setter method for vlan_range, mapped from YANG variable /networks/network/node/termination_point/eth_svc/supported_vlan_operations/vlan_push/second_tag/vlan_range (etht-types:vid-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlan_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlan_range() directly. + + YANG Description: In case VLAN push/swap operation is supported, the range +of available VLAN ID values. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlan_range must be of a type compatible with etht-types:vid-range-type""", + 'defined-type': "etht-types:vid-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True)""", + }) + + self.__vlan_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlan_range(self): + self.__vlan_range = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="vlan-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vid-range-type', is_config=True) + + push_second_tag = __builtin__.property(_get_push_second_tag, _set_push_second_tag) + supported_tag_types = __builtin__.property(_get_supported_tag_types, _set_supported_tag_types) + vlan_range = __builtin__.property(_get_vlan_range, _set_vlan_range) + + + _pyangbind_elements = OrderedDict([('push_second_tag', push_second_tag), ('supported_tag_types', supported_tag_types), ('vlan_range', vlan_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/supporting_termination_point/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/supporting_termination_point/__init__.py new file mode 100644 index 000000000..cb2a897c8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/supporting_termination_point/__init__.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class supporting_termination_point(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/supporting-termination-point. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This list identifies any termination points on which a +given termination point depends or onto which it maps. +Those termination points will themselves be contained +in a supporting node. This dependency information can be +inferred from the dependencies between links. Therefore, +this item is not separately configurable. Hence, no +corresponding constraint needs to be articulated. +The corresponding information is simply provided by the +implementing system. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__node_ref','__tp_ref',) + + _yang_name = 'supporting-termination-point' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'supporting-termination-point'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/network_ref (leafref) + + YANG Description: This leaf identifies in which topology the +supporting termination point is present. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: This leaf identifies in which topology the +supporting termination point is present. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + + def _get_node_ref(self): + """ + Getter method for node_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/node_ref (leafref) + + YANG Description: This leaf identifies in which node the supporting +termination point is present. + """ + return self.__node_ref + + def _set_node_ref(self, v, load=False): + """ + Setter method for node_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/node_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_ref() directly. + + YANG Description: This leaf identifies in which node the supporting +termination point is present. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__node_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_ref(self): + self.__node_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + + def _get_tp_ref(self): + """ + Getter method for tp_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/tp_ref (leafref) + + YANG Description: Reference to the underlay node (the underlay node must +be in a different topology). + """ + return self.__tp_ref + + def _set_tp_ref(self, v, load=False): + """ + Setter method for tp_ref, mapped from YANG variable /networks/network/node/termination_point/supporting_termination_point/tp_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tp_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tp_ref() directly. + + YANG Description: Reference to the underlay node (the underlay node must +be in a different topology). + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tp_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True)""", + }) + + self.__tp_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_tp_ref(self): + self.__tp_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tp-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network-topology', defining_module='ietf-network-topology', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + node_ref = __builtin__.property(_get_node_ref, _set_node_ref) + tp_ref = __builtin__.property(_get_tp_ref, _set_tp_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('node_ref', node_ref), ('tp_ref', tp_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/__init__.py new file mode 100644 index 000000000..4c7ab6264 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/__init__.py @@ -0,0 +1,445 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import interface_switching_capability +from . import geolocation +from . import otn_ltp +from . import client_svc +class te(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates TE support. + """ + __slots__ = ('_path_helper', '_extmethods', '__admin_status','__name','__interface_switching_capability','__inter_domain_plug_id','__inter_layer_lock_id','__oper_status','__geolocation','__otn_ltp','__client_svc',) + + _yang_name = 'te' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__inter_domain_plug_id = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="inter-domain-plug-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__inter_layer_lock_id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + self.__otn_ltp = YANGDynClass(base=otn_ltp.otn_ltp, is_container='container', yang_name="otn-ltp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__client_svc = YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te'] + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/network/node/termination_point/te/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the LTP. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/network/node/termination_point/te/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/node/termination_point/te/name (string) + + YANG Description: A descriptive name for the LTP. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/node/termination_point/te/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: A descriptive name for the LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_interface_switching_capability(self): + """ + Getter method for interface_switching_capability, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability (list) + + YANG Description: List of ISCDs for this link. + """ + return self.__interface_switching_capability + + def _set_interface_switching_capability(self, v, load=False): + """ + Setter method for interface_switching_capability, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_interface_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interface_switching_capability() directly. + + YANG Description: List of ISCDs for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interface_switching_capability must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__interface_switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_interface_switching_capability(self): + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_inter_domain_plug_id(self): + """ + Getter method for inter_domain_plug_id, mapped from YANG variable /networks/network/node/termination_point/te/inter_domain_plug_id (binary) + + YANG Description: A network-wide unique number that identifies on the +network a connection that supports a given inter-domain +TE link. This is a more flexible alternative to specifying +'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link +when the provider either does not know 'remote-te-node-id' +and 'remote-te-link-tp-id' or needs to give the client the +flexibility to mix and match multiple topologies. + """ + return self.__inter_domain_plug_id + + def _set_inter_domain_plug_id(self, v, load=False): + """ + Setter method for inter_domain_plug_id, mapped from YANG variable /networks/network/node/termination_point/te/inter_domain_plug_id (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_inter_domain_plug_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_inter_domain_plug_id() directly. + + YANG Description: A network-wide unique number that identifies on the +network a connection that supports a given inter-domain +TE link. This is a more flexible alternative to specifying +'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link +when the provider either does not know 'remote-te-node-id' +and 'remote-te-link-tp-id' or needs to give the client the +flexibility to mix and match multiple topologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="inter-domain-plug-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """inter_domain_plug_id must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="inter-domain-plug-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__inter_domain_plug_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_inter_domain_plug_id(self): + self.__inter_domain_plug_id = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="inter-domain-plug-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_inter_layer_lock_id(self): + """ + Getter method for inter_layer_lock_id, mapped from YANG variable /networks/network/node/termination_point/te/inter_layer_lock_id (uint32) + + YANG Description: Inter-layer lock ID, used for path computation in a TE +topology covering multiple layers or multiple regions. + """ + return self.__inter_layer_lock_id + + def _set_inter_layer_lock_id(self, v, load=False): + """ + Setter method for inter_layer_lock_id, mapped from YANG variable /networks/network/node/termination_point/te/inter_layer_lock_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_inter_layer_lock_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_inter_layer_lock_id() directly. + + YANG Description: Inter-layer lock ID, used for path computation in a TE +topology covering multiple layers or multiple regions. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """inter_layer_lock_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__inter_layer_lock_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_inter_layer_lock_id(self): + self.__inter_layer_lock_id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="inter-layer-lock-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /networks/network/node/termination_point/te/oper_status (te-types:te-oper-status) + + YANG Description: The current operational state of the LTP. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /networks/network/node/termination_point/te/oper_status (te-types:te-oper-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with te-types:te-oper-status""", + 'defined-type': "te-types:te-oper-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-oper-status', is_config=False) + + + def _get_geolocation(self): + """ + Getter method for geolocation, mapped from YANG variable /networks/network/node/termination_point/te/geolocation (container) + + YANG Description: Contains a GPS location. + """ + return self.__geolocation + + def _set_geolocation(self, v, load=False): + """ + Setter method for geolocation, mapped from YANG variable /networks/network/node/termination_point/te/geolocation (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_geolocation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_geolocation() directly. + + YANG Description: Contains a GPS location. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """geolocation must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__geolocation = t + if hasattr(self, '_set'): + self._set() + + def _unset_geolocation(self): + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + + def _get_otn_ltp(self): + """ + Getter method for otn_ltp, mapped from YANG variable /networks/network/node/termination_point/te/otn_ltp (container) + + YANG Description: Attributes of the OTN Link Termination Point (LTP). + """ + return self.__otn_ltp + + def _set_otn_ltp(self, v, load=False): + """ + Setter method for otn_ltp, mapped from YANG variable /networks/network/node/termination_point/te/otn_ltp (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_ltp is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_ltp() directly. + + YANG Description: Attributes of the OTN Link Termination Point (LTP). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_ltp.otn_ltp, is_container='container', yang_name="otn-ltp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_ltp must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_ltp.otn_ltp, is_container='container', yang_name="otn-ltp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_ltp = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_ltp(self): + self.__otn_ltp = YANGDynClass(base=otn_ltp.otn_ltp, is_container='container', yang_name="otn-ltp", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_client_svc(self): + """ + Getter method for client_svc, mapped from YANG variable /networks/network/node/termination_point/te/client_svc (container) + + YANG Description: OTN LTP Service attributes. + """ + return self.__client_svc + + def _set_client_svc(self, v, load=False): + """ + Setter method for client_svc, mapped from YANG variable /networks/network/node/termination_point/te/client_svc (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_client_svc is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_client_svc() directly. + + YANG Description: OTN LTP Service attributes. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """client_svc must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__client_svc = t + if hasattr(self, '_set'): + self._set() + + def _unset_client_svc(self): + self.__client_svc = YANGDynClass(base=client_svc.client_svc, is_container='container', yang_name="client-svc", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + name = __builtin__.property(_get_name, _set_name) + interface_switching_capability = __builtin__.property(_get_interface_switching_capability, _set_interface_switching_capability) + inter_domain_plug_id = __builtin__.property(_get_inter_domain_plug_id, _set_inter_domain_plug_id) + inter_layer_lock_id = __builtin__.property(_get_inter_layer_lock_id, _set_inter_layer_lock_id) + oper_status = __builtin__.property(_get_oper_status) + geolocation = __builtin__.property(_get_geolocation) + otn_ltp = __builtin__.property(_get_otn_ltp, _set_otn_ltp) + client_svc = __builtin__.property(_get_client_svc, _set_client_svc) + + + _pyangbind_elements = OrderedDict([('admin_status', admin_status), ('name', name), ('interface_switching_capability', interface_switching_capability), ('inter_domain_plug_id', inter_domain_plug_id), ('inter_layer_lock_id', inter_layer_lock_id), ('oper_status', oper_status), ('geolocation', geolocation), ('otn_ltp', otn_ltp), ('client_svc', client_svc), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/client_svc/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/client_svc/__init__.py new file mode 100644 index 000000000..6dd0b2c13 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/client_svc/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class client_svc(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/client-svc. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN LTP Service attributes. + """ + __slots__ = ('_path_helper', '_extmethods', '__supported_client_signal',) + + _yang_name = 'client-svc' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__supported_client_signal = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'client-svc'] + + def _get_supported_client_signal(self): + """ + Getter method for supported_client_signal, mapped from YANG variable /networks/network/node/termination_point/te/client_svc/supported_client_signal (identityref) + + YANG Description: List of client signal types supported by the LTP. + """ + return self.__supported_client_signal + + def _set_supported_client_signal(self, v, load=False): + """ + Setter method for supported_client_signal, mapped from YANG variable /networks/network/node/termination_point/te/client_svc/supported_client_signal (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_supported_client_signal is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_supported_client_signal() directly. + + YANG Description: List of client signal types supported by the LTP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """supported_client_signal must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__supported_client_signal = t + if hasattr(self, '_set'): + self._set() + + def _unset_supported_client_signal(self): + self.__supported_client_signal = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-1Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-LAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-10Gb-WAN': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-40Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ETH-100Gb': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-16': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-64': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:STM-256': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-12': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-48': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-192': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:OC-768': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-100': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-400': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-800': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-1600': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FC-3200': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-4G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:FICON-8G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="supported-client-signal", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + supported_client_signal = __builtin__.property(_get_supported_client_signal, _set_supported_client_signal) + + + _pyangbind_elements = OrderedDict([('supported_client_signal', supported_client_signal), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/geolocation/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/geolocation/__init__.py new file mode 100644 index 000000000..a02b6d62f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/geolocation/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class geolocation(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/geolocation. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a GPS location. + """ + __slots__ = ('_path_helper', '_extmethods', '__altitude','__latitude','__longitude',) + + _yang_name = 'geolocation' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'geolocation'] + + def _get_altitude(self): + """ + Getter method for altitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/altitude (int64) + + YANG Description: Distance above sea level. + """ + return self.__altitude + + def _set_altitude(self, v, load=False): + """ + Setter method for altitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/altitude (int64) + If this variable is read-only (config: false) in the + source YANG file, then _set_altitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_altitude() directly. + + YANG Description: Distance above sea level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """altitude must be of a type compatible with int64""", + 'defined-type': "int64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False)""", + }) + + self.__altitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_altitude(self): + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + + + def _get_latitude(self): + """ + Getter method for latitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/latitude (geographic-coordinate-degree) + + YANG Description: Relative position north or south on the Earth's surface. + """ + return self.__latitude + + def _set_latitude(self, v, load=False): + """ + Setter method for latitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/latitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_latitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_latitude() directly. + + YANG Description: Relative position north or south on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """latitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__latitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_latitude(self): + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + + def _get_longitude(self): + """ + Getter method for longitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/longitude (geographic-coordinate-degree) + + YANG Description: Angular distance east or west on the Earth's surface. + """ + return self.__longitude + + def _set_longitude(self, v, load=False): + """ + Setter method for longitude, mapped from YANG variable /networks/network/node/termination_point/te/geolocation/longitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_longitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_longitude() directly. + + YANG Description: Angular distance east or west on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """longitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__longitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_longitude(self): + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + altitude = __builtin__.property(_get_altitude) + latitude = __builtin__.property(_get_latitude) + longitude = __builtin__.property(_get_longitude) + + + _pyangbind_elements = OrderedDict([('altitude', altitude), ('latitude', latitude), ('longitude', longitude), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/__init__.py new file mode 100644 index 000000000..e158b30c3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import max_lsp_bandwidth +class interface_switching_capability(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/interface-switching-capability. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of ISCDs for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability','__encoding','__max_lsp_bandwidth',) + + _yang_name = 'interface-switching-capability' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'interface-switching-capability'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/switching_capability (identityref) + + YANG Description: Switching capability for this interface. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/encoding (identityref) + + YANG Description: Encoding supported by this interface. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_max_lsp_bandwidth(self): + """ + Getter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth (list) + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + return self.__max_lsp_bandwidth + + def _set_max_lsp_bandwidth(self, v, load=False): + """ + Setter method for max_lsp_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_lsp_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_lsp_bandwidth() directly. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_lsp_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__max_lsp_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_lsp_bandwidth(self): + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + encoding = __builtin__.property(_get_encoding, _set_encoding) + max_lsp_bandwidth = __builtin__.property(_get_max_lsp_bandwidth, _set_max_lsp_bandwidth) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ('encoding', encoding), ('max_lsp_bandwidth', max_lsp_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/__init__.py new file mode 100644 index 000000000..429b0f18b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_lsp_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/interface-switching-capability/max-lsp-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'max-lsp-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'interface-switching-capability', 'max-lsp-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + priority = __builtin__.property(_get_priority, _set_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..d0326e850 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/interface-switching-capability/max-lsp-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..fcfb11adf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/interface-switching-capability/max-lsp-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__max_ts_number',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_max_ts_number(self): + """ + Getter method for max_ts_number, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + return self.__max_ts_number + + def _set_max_ts_number(self, v, load=False): + """ + Setter method for max_ts_number, mapped from YANG variable /networks/network/node/termination_point/te/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_ts_number() directly. + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__max_ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_ts_number(self): + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + max_ts_number = __builtin__.property(_get_max_ts_number, _set_max_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'max_ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('max_ts_number', max_ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/otn_ltp/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/otn_ltp/__init__.py new file mode 100644 index 000000000..55ef3745b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/node/termination_point/te/otn_ltp/__init__.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_ltp(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/node/termination-point/te/otn-ltp. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the OTN Link Termination Point (LTP). + """ + __slots__ = ('_path_helper', '_extmethods', '__odtu_flex_type',) + + _yang_name = 'otn-ltp' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'node', 'termination-point', 'te', 'otn-ltp'] + + def _get_odtu_flex_type(self): + """ + Getter method for odtu_flex_type, mapped from YANG variable /networks/network/node/termination_point/te/otn_ltp/odtu_flex_type (l1-types:odtu-flex-type) + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs set up +on this OTN Link Termination Point (LTP). + """ + return self.__odtu_flex_type + + def _set_odtu_flex_type(self, v, load=False): + """ + Setter method for odtu_flex_type, mapped from YANG variable /networks/network/node/termination_point/te/otn_ltp/odtu_flex_type (l1-types:odtu-flex-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_odtu_flex_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odtu_flex_type() directly. + + YANG Description: The type of Optical Data Tributary Unit (ODTU) +whose nominal bitrate is used to compute the number of +Tributary Slots (TS) required by the ODUflex LSPs set up +on this OTN Link Termination Point (LTP). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odtu_flex_type must be of a type compatible with l1-types:odtu-flex-type""", + 'defined-type': "l1-types:odtu-flex-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True)""", + }) + + self.__odtu_flex_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odtu_flex_type(self): + self.__odtu_flex_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'2': {}, '3': {}, '4': {}, 'Cn': {}},), is_leaf=True, yang_name="odtu-flex-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='l1-types:odtu-flex-type', is_config=True) + + odtu_flex_type = __builtin__.property(_get_odtu_flex_type, _set_odtu_flex_type) + + + _pyangbind_elements = OrderedDict([('odtu_flex_type', odtu_flex_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/supporting_network/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/supporting_network/__init__.py new file mode 100644 index 000000000..183db8264 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/supporting_network/__init__.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class supporting_network(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/supporting-network. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: An underlay network, used to represent layered network +topologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref',) + + _yang_name = 'supporting-network' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'supporting-network'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/network/supporting_network/network_ref (leafref) + + YANG Description: References the underlay network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/network/supporting_network/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: References the underlay network. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-network', defining_module='ietf-network', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/__init__.py new file mode 100644 index 000000000..ac4025b54 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/__init__.py @@ -0,0 +1,283 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import nsrlg +from . import geolocation +class te(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/te. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates TE support. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__preference','__optimization_criterion','__nsrlg','__geolocation',) + + _yang_name = 'te' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__preference = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..255']}), is_leaf=True, yang_name="preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__optimization_criterion = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="optimization-criterion", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__nsrlg = YANGDynClass(base=YANGListType("id",nsrlg.nsrlg, yang_name="nsrlg", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="nsrlg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'te'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/network/te/name (string) + + YANG Description: Name of the TE topology. This attribute is optional and can +be specified by the operator to describe the TE topology, +which can be useful when 'network-id' (RFC 8345) is not +descriptive and not modifiable because of being generated +by the system. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/network/te/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Name of the TE topology. This attribute is optional and can +be specified by the operator to describe the TE topology, +which can be useful when 'network-id' (RFC 8345) is not +descriptive and not modifiable because of being generated +by the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_preference(self): + """ + Getter method for preference, mapped from YANG variable /networks/network/te/preference (uint8) + + YANG Description: Specifies a preference for this topology. A lower number +indicates a higher preference. + """ + return self.__preference + + def _set_preference(self, v, load=False): + """ + Setter method for preference, mapped from YANG variable /networks/network/te/preference (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_preference is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_preference() directly. + + YANG Description: Specifies a preference for this topology. A lower number +indicates a higher preference. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..255']}), is_leaf=True, yang_name="preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """preference must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..255']}), is_leaf=True, yang_name="preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__preference = t + if hasattr(self, '_set'): + self._set() + + def _unset_preference(self): + self.__preference = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['1..255']}), is_leaf=True, yang_name="preference", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_optimization_criterion(self): + """ + Getter method for optimization_criterion, mapped from YANG variable /networks/network/te/optimization_criterion (identityref) + + YANG Description: Optimization criterion applied to this topology. + """ + return self.__optimization_criterion + + def _set_optimization_criterion(self, v, load=False): + """ + Setter method for optimization_criterion, mapped from YANG variable /networks/network/te/optimization_criterion (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_optimization_criterion is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_optimization_criterion() directly. + + YANG Description: Optimization criterion applied to this topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="optimization-criterion", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """optimization_criterion must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="optimization-criterion", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__optimization_criterion = t + if hasattr(self, '_set'): + self._set() + + def _unset_optimization_criterion(self): + self.__optimization_criterion = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-path': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-maximize-residual-bandwidth': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-agg-bandwidth-consumption': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-load-most-loaded-link': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:of-minimize-cost-path-set': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="optimization-criterion", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_nsrlg(self): + """ + Getter method for nsrlg, mapped from YANG variable /networks/network/te/nsrlg (list) + + YANG Description: List of NSRLGs (Non-Shared Risk Link Groups). + """ + return self.__nsrlg + + def _set_nsrlg(self, v, load=False): + """ + Setter method for nsrlg, mapped from YANG variable /networks/network/te/nsrlg (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_nsrlg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_nsrlg() directly. + + YANG Description: List of NSRLGs (Non-Shared Risk Link Groups). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("id",nsrlg.nsrlg, yang_name="nsrlg", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="nsrlg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """nsrlg must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("id",nsrlg.nsrlg, yang_name="nsrlg", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="nsrlg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__nsrlg = t + if hasattr(self, '_set'): + self._set() + + def _unset_nsrlg(self): + self.__nsrlg = YANGDynClass(base=YANGListType("id",nsrlg.nsrlg, yang_name="nsrlg", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='id', extensions=None), is_container='list', yang_name="nsrlg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_geolocation(self): + """ + Getter method for geolocation, mapped from YANG variable /networks/network/te/geolocation (container) + + YANG Description: Contains a GPS location. + """ + return self.__geolocation + + def _set_geolocation(self, v, load=False): + """ + Setter method for geolocation, mapped from YANG variable /networks/network/te/geolocation (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_geolocation is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_geolocation() directly. + + YANG Description: Contains a GPS location. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """geolocation must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False)""", + }) + + self.__geolocation = t + if hasattr(self, '_set'): + self._set() + + def _unset_geolocation(self): + self.__geolocation = YANGDynClass(base=geolocation.geolocation, is_container='container', yang_name="geolocation", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=False) + + name = __builtin__.property(_get_name, _set_name) + preference = __builtin__.property(_get_preference, _set_preference) + optimization_criterion = __builtin__.property(_get_optimization_criterion, _set_optimization_criterion) + nsrlg = __builtin__.property(_get_nsrlg, _set_nsrlg) + geolocation = __builtin__.property(_get_geolocation) + + + _pyangbind_elements = OrderedDict([('name', name), ('preference', preference), ('optimization_criterion', optimization_criterion), ('nsrlg', nsrlg), ('geolocation', geolocation), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/geolocation/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/geolocation/__init__.py new file mode 100644 index 000000000..b415c4e43 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/geolocation/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class geolocation(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/te/geolocation. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a GPS location. + """ + __slots__ = ('_path_helper', '_extmethods', '__altitude','__latitude','__longitude',) + + _yang_name = 'geolocation' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'te', 'geolocation'] + + def _get_altitude(self): + """ + Getter method for altitude, mapped from YANG variable /networks/network/te/geolocation/altitude (int64) + + YANG Description: Distance above sea level. + """ + return self.__altitude + + def _set_altitude(self, v, load=False): + """ + Setter method for altitude, mapped from YANG variable /networks/network/te/geolocation/altitude (int64) + If this variable is read-only (config: false) in the + source YANG file, then _set_altitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_altitude() directly. + + YANG Description: Distance above sea level. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """altitude must be of a type compatible with int64""", + 'defined-type': "int64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False)""", + }) + + self.__altitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_altitude(self): + self.__altitude = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64), is_leaf=True, yang_name="altitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int64', is_config=False) + + + def _get_latitude(self): + """ + Getter method for latitude, mapped from YANG variable /networks/network/te/geolocation/latitude (geographic-coordinate-degree) + + YANG Description: Relative position north or south on the Earth's surface. + """ + return self.__latitude + + def _set_latitude(self, v, load=False): + """ + Setter method for latitude, mapped from YANG variable /networks/network/te/geolocation/latitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_latitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_latitude() directly. + + YANG Description: Relative position north or south on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """latitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__latitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_latitude(self): + self.__latitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-90..90']}), is_leaf=True, yang_name="latitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + + def _get_longitude(self): + """ + Getter method for longitude, mapped from YANG variable /networks/network/te/geolocation/longitude (geographic-coordinate-degree) + + YANG Description: Angular distance east or west on the Earth's surface. + """ + return self.__longitude + + def _set_longitude(self, v, load=False): + """ + Setter method for longitude, mapped from YANG variable /networks/network/te/geolocation/longitude (geographic-coordinate-degree) + If this variable is read-only (config: false) in the + source YANG file, then _set_longitude is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_longitude() directly. + + YANG Description: Angular distance east or west on the Earth's surface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """longitude must be of a type compatible with geographic-coordinate-degree""", + 'defined-type': "ietf-te-topology:geographic-coordinate-degree", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False)""", + }) + + self.__longitude = t + if hasattr(self, '_set'): + self._set() + + def _unset_longitude(self): + self.__longitude = YANGDynClass(base=RestrictedClassType(base_type=RestrictedPrecisionDecimalType(precision=8), restriction_dict={'range': ['-180..180']}), is_leaf=True, yang_name="longitude", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='geographic-coordinate-degree', is_config=False) + + altitude = __builtin__.property(_get_altitude) + latitude = __builtin__.property(_get_latitude) + longitude = __builtin__.property(_get_longitude) + + + _pyangbind_elements = OrderedDict([('altitude', altitude), ('latitude', latitude), ('longitude', longitude), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/nsrlg/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/nsrlg/__init__.py new file mode 100644 index 000000000..d905efa92 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te/nsrlg/__init__.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class nsrlg(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/te/nsrlg. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of NSRLGs (Non-Shared Risk Link Groups). + """ + __slots__ = ('_path_helper', '_extmethods', '__id','__disjointness',) + + _yang_name = 'nsrlg' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-path-disjointness', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'te', 'nsrlg'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/network/te/nsrlg/id (uint32) + + YANG Description: Identifies the NSRLG entry. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/network/te/nsrlg/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: Identifies the NSRLG entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_disjointness(self): + """ + Getter method for disjointness, mapped from YANG variable /networks/network/te/nsrlg/disjointness (te-types:te-path-disjointness) + + YANG Description: The type of resource disjointness. + """ + return self.__disjointness + + def _set_disjointness(self, v, load=False): + """ + Setter method for disjointness, mapped from YANG variable /networks/network/te/nsrlg/disjointness (te-types:te-path-disjointness) + If this variable is read-only (config: false) in the + source YANG file, then _set_disjointness is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_disjointness() directly. + + YANG Description: The type of resource disjointness. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-path-disjointness', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """disjointness must be of a type compatible with te-types:te-path-disjointness""", + 'defined-type': "te-types:te-path-disjointness", + 'generated-type': """YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-path-disjointness', is_config=True)""", + }) + + self.__disjointness = t + if hasattr(self, '_set'): + self._set() + + def _unset_disjointness(self): + self.__disjointness = YANGDynClass(base=YANGBitsType(allowed_bits={'node': '0', 'link': '1', 'srlg': '2'}), is_leaf=True, yang_name="disjointness", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-path-disjointness', is_config=True) + + id = __builtin__.property(_get_id, _set_id) + disjointness = __builtin__.property(_get_disjointness, _set_disjointness) + + + _pyangbind_elements = OrderedDict([('id', id), ('disjointness', disjointness), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te_topology_identifier/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te_topology_identifier/__init__.py new file mode 100644 index 000000000..0e29c5c0c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/network/te_topology_identifier/__init__.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_topology_identifier(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/network/te-topology-identifier. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: TE topology identifier container. + """ + __slots__ = ('_path_helper', '_extmethods', '__provider_id','__client_id','__topology_id',) + + _yang_name = 'te-topology-identifier' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__provider_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="provider-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + self.__client_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="client-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + self.__topology_id = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_dict={'length': ['0']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([a-zA-Z0-9\\-_.]+:)*/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}),], default=six.text_type(""), is_leaf=True, yang_name="topology-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-topology-id', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'network', 'te-topology-identifier'] + + def _get_provider_id(self): + """ + Getter method for provider_id, mapped from YANG variable /networks/network/te_topology_identifier/provider_id (te-global-id) + + YANG Description: An identifier to uniquely identify a provider. +If omitted, it assumes that the topology provider ID +value = 0 (the default). + """ + return self.__provider_id + + def _set_provider_id(self, v, load=False): + """ + Setter method for provider_id, mapped from YANG variable /networks/network/te_topology_identifier/provider_id (te-global-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_provider_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_provider_id() directly. + + YANG Description: An identifier to uniquely identify a provider. +If omitted, it assumes that the topology provider ID +value = 0 (the default). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="provider-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """provider_id must be of a type compatible with te-global-id""", + 'defined-type': "ietf-te-topology:te-global-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="provider-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True)""", + }) + + self.__provider_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_provider_id(self): + self.__provider_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="provider-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + + + def _get_client_id(self): + """ + Getter method for client_id, mapped from YANG variable /networks/network/te_topology_identifier/client_id (te-global-id) + + YANG Description: An identifier to uniquely identify a client. +If omitted, it assumes that the topology client ID +value = 0 (the default). + """ + return self.__client_id + + def _set_client_id(self, v, load=False): + """ + Setter method for client_id, mapped from YANG variable /networks/network/te_topology_identifier/client_id (te-global-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_client_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_client_id() directly. + + YANG Description: An identifier to uniquely identify a client. +If omitted, it assumes that the topology client ID +value = 0 (the default). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="client-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """client_id must be of a type compatible with te-global-id""", + 'defined-type': "ietf-te-topology:te-global-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="client-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True)""", + }) + + self.__client_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_client_id(self): + self.__client_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="client-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-global-id', is_config=True) + + + def _get_topology_id(self): + """ + Getter method for topology_id, mapped from YANG variable /networks/network/te_topology_identifier/topology_id (te-topology-id) + + YANG Description: When the datastore contains several topologies, +'topology-id' distinguishes between them. If omitted, +the default (empty) string for this leaf is assumed. + """ + return self.__topology_id + + def _set_topology_id(self, v, load=False): + """ + Setter method for topology_id, mapped from YANG variable /networks/network/te_topology_identifier/topology_id (te-topology-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology_id() directly. + + YANG Description: When the datastore contains several topologies, +'topology-id' distinguishes between them. If omitted, +the default (empty) string for this leaf is assumed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=six.text_type, restriction_dict={'length': ['0']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([a-zA-Z0-9\\-_.]+:)*/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}),], default=six.text_type(""), is_leaf=True, yang_name="topology-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-topology-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology_id must be of a type compatible with te-topology-id""", + 'defined-type': "ietf-te-topology:te-topology-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_dict={'length': ['0']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([a-zA-Z0-9\\-_.]+:)*/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}),], default=six.text_type(""), is_leaf=True, yang_name="topology-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-topology-id', is_config=True)""", + }) + + self.__topology_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology_id(self): + self.__topology_id = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_dict={'length': ['0']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([a-zA-Z0-9\\-_.]+:)*/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}),], default=six.text_type(""), is_leaf=True, yang_name="topology-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-topology-id', is_config=True) + + provider_id = __builtin__.property(_get_provider_id, _set_provider_id) + client_id = __builtin__.property(_get_client_id, _set_client_id) + topology_id = __builtin__.property(_get_topology_id, _set_topology_id) + + + _pyangbind_elements = OrderedDict([('provider_id', provider_id), ('client_id', client_id), ('topology_id', topology_id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/__init__.py new file mode 100644 index 000000000..f38ba7bb8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import templates +class te(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Indicates TE support. + """ + __slots__ = ('_path_helper', '_extmethods', '__templates',) + + _yang_name = 'te' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__templates = YANGDynClass(base=templates.templates, is_container='container', yang_name="templates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te'] + + def _get_templates(self): + """ + Getter method for templates, mapped from YANG variable /networks/te/templates (container) + + YANG Description: Configuration parameters for templates used for a TE +topology. + """ + return self.__templates + + def _set_templates(self, v, load=False): + """ + Setter method for templates, mapped from YANG variable /networks/te/templates (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_templates is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_templates() directly. + + YANG Description: Configuration parameters for templates used for a TE +topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=templates.templates, is_container='container', yang_name="templates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """templates must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=templates.templates, is_container='container', yang_name="templates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__templates = t + if hasattr(self, '_set'): + self._set() + + def _unset_templates(self): + self.__templates = YANGDynClass(base=templates.templates, is_container='container', yang_name="templates", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + templates = __builtin__.property(_get_templates, _set_templates) + + + _pyangbind_elements = OrderedDict([('templates', templates), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/__init__.py new file mode 100644 index 000000000..645419914 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import node_template +from . import link_template +class templates(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration parameters for templates used for a TE +topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_template','__link_template',) + + _yang_name = 'templates' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_template = YANGDynClass(base=YANGListType("name",node_template.node_template, yang_name="node-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__link_template = YANGDynClass(base=YANGListType("name",link_template.link_template, yang_name="link-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates'] + + def _get_node_template(self): + """ + Getter method for node_template, mapped from YANG variable /networks/te/templates/node_template (list) + + YANG Description: The list of TE node templates used to define sharable +and reusable TE node attributes. + """ + return self.__node_template + + def _set_node_template(self, v, load=False): + """ + Setter method for node_template, mapped from YANG variable /networks/te/templates/node_template (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_template is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_template() directly. + + YANG Description: The list of TE node templates used to define sharable +and reusable TE node attributes. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",node_template.node_template, yang_name="node-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_template must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",node_template.node_template, yang_name="node-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__node_template = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_template(self): + self.__node_template = YANGDynClass(base=YANGListType("name",node_template.node_template, yang_name="node-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="node-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_link_template(self): + """ + Getter method for link_template, mapped from YANG variable /networks/te/templates/link_template (list) + + YANG Description: The list of TE link templates used to define sharable +and reusable TE link attributes. + """ + return self.__link_template + + def _set_link_template(self, v, load=False): + """ + Setter method for link_template, mapped from YANG variable /networks/te/templates/link_template (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_template is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_template() directly. + + YANG Description: The list of TE link templates used to define sharable +and reusable TE link attributes. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",link_template.link_template, yang_name="link-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_template must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",link_template.link_template, yang_name="link-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__link_template = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_template(self): + self.__link_template = YANGDynClass(base=YANGListType("name",link_template.link_template, yang_name="link-template", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="link-template", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + node_template = __builtin__.property(_get_node_template, _set_node_template) + link_template = __builtin__.property(_get_link_template, _set_link_template) + + + _pyangbind_elements = OrderedDict([('node_template', node_template), ('link_template', link_template), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/__init__.py new file mode 100644 index 000000000..132c4dbd3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/__init__.py @@ -0,0 +1,251 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_link_attributes +class link_template(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of TE link templates used to define sharable +and reusable TE link attributes. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__priority','__reference_change_policy','__te_link_attributes',) + + _yang_name = 'link-template' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + self.__reference_change_policy = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__te_link_attributes = YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/te/templates/link_template/name (te-types:te-template-name) + + YANG Description: The name to identify a TE link template. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/te/templates/link_template/name (te-types:te-template-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: The name to identify a TE link template. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with te-types:te-template-name""", + 'defined-type': "te-types:te-template-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/link_template/priority (uint16) + + YANG Description: The preference value for resolving conflicts between +different templates. When two or more templates specify +values for one configuration attribute, the value from the +template with the highest priority is used. +A lower number indicates a higher priority. The highest +priority is 0. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/link_template/priority (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: The preference value for resolving conflicts between +different templates. When two or more templates specify +values for one configuration attribute, the value from the +template with the highest priority is used. +A lower number indicates a higher priority. The highest +priority is 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + + + def _get_reference_change_policy(self): + """ + Getter method for reference_change_policy, mapped from YANG variable /networks/te/templates/link_template/reference_change_policy (enumeration) + + YANG Description: This attribute specifies the action taken for a +configuration node that has a reference to this template. + """ + return self.__reference_change_policy + + def _set_reference_change_policy(self, v, load=False): + """ + Setter method for reference_change_policy, mapped from YANG variable /networks/te/templates/link_template/reference_change_policy (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_reference_change_policy is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_reference_change_policy() directly. + + YANG Description: This attribute specifies the action taken for a +configuration node that has a reference to this template. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """reference_change_policy must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__reference_change_policy = t + if hasattr(self, '_set'): + self._set() + + def _unset_reference_change_policy(self): + self.__reference_change_policy = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_te_link_attributes(self): + """ + Getter method for te_link_attributes, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes (container) + + YANG Description: Link attributes in a TE topology. + """ + return self.__te_link_attributes + + def _set_te_link_attributes(self, v, load=False): + """ + Setter method for te_link_attributes, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_link_attributes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_link_attributes() directly. + + YANG Description: Link attributes in a TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_link_attributes must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_link_attributes = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_link_attributes(self): + self.__te_link_attributes = YANGDynClass(base=te_link_attributes.te_link_attributes, is_container='container', yang_name="te-link-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + priority = __builtin__.property(_get_priority, _set_priority) + reference_change_policy = __builtin__.property(_get_reference_change_policy, _set_reference_change_policy) + te_link_attributes = __builtin__.property(_get_te_link_attributes, _set_te_link_attributes) + + + _pyangbind_elements = OrderedDict([('name', name), ('priority', priority), ('reference_change_policy', reference_change_policy), ('te_link_attributes', te_link_attributes), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/__init__.py new file mode 100644 index 000000000..b694dcce0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/__init__.py @@ -0,0 +1,858 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import external_domain +from . import underlay +from . import interface_switching_capability +from . import label_restrictions +from . import max_link_bandwidth +from . import max_resv_link_bandwidth +from . import unreserved_bandwidth +from . import te_srlgs +from . import te_nsrlgs +class te_link_attributes(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Link attributes in a TE topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__access_type','__external_domain','__is_abstract','__name','__underlay','__admin_status','__link_index','__administrative_group','__interface_switching_capability','__label_restrictions','__link_protection_type','__max_link_bandwidth','__max_resv_link_bandwidth','__unreserved_bandwidth','__te_default_metric','__te_delay_metric','__te_igp_metric','__te_srlgs','__te_nsrlgs',) + + _yang_name = 'te-link-attributes' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__access_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + self.__external_domain = YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes'] + + def _get_access_type(self): + """ + Getter method for access_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/access_type (te-types:te-link-access-type) + + YANG Description: Link access type, which can be point-to-point or +multi-access. + """ + return self.__access_type + + def _set_access_type(self, v, load=False): + """ + Setter method for access_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/access_type (te-types:te-link-access-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_access_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_access_type() directly. + + YANG Description: Link access type, which can be point-to-point or +multi-access. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """access_type must be of a type compatible with te-types:te-link-access-type""", + 'defined-type': "te-types:te-link-access-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True)""", + }) + + self.__access_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_access_type(self): + self.__access_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'point-to-point': {}, 'multi-access': {}},), is_leaf=True, yang_name="access-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-link-access-type', is_config=True) + + + def _get_external_domain(self): + """ + Getter method for external_domain, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain (container) + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + return self.__external_domain + + def _set_external_domain(self, v, load=False): + """ + Setter method for external_domain, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_external_domain is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_external_domain() directly. + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """external_domain must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__external_domain = t + if hasattr(self, '_set'): + self._set() + + def _unset_external_domain(self): + self.__external_domain = YANGDynClass(base=external_domain.external_domain, is_container='container', yang_name="external-domain", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_is_abstract(self): + """ + Getter method for is_abstract, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/is_abstract (empty) + + YANG Description: Present if the link is abstract. + """ + return self.__is_abstract + + def _set_is_abstract(self, v, load=False): + """ + Setter method for is_abstract, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/is_abstract (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_abstract is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_abstract() directly. + + YANG Description: Present if the link is abstract. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_abstract must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True)""", + }) + + self.__is_abstract = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_abstract(self): + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/name (string) + + YANG Description: Link name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Link name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_underlay(self): + """ + Getter method for underlay, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay (container) + + YANG Description: Attributes of the TE link underlay. + """ + return self.__underlay + + def _set_underlay(self, v, load=False): + """ + Setter method for underlay, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay() directly. + + YANG Description: Attributes of the TE link underlay. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay(self): + self.__underlay = YANGDynClass(base=underlay.underlay, is_container='container', yang_name="underlay", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the link. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_link_index(self): + """ + Getter method for link_index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/link_index (uint64) + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + return self.__link_index + + def _set_link_index(self, v, load=False): + """ + Setter method for link_index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/link_index (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_index() directly. + + YANG Description: The link identifier. If OSPF is used, this object +represents an ospfLsdbID. If IS-IS is used, this object +represents an isisLSPID. If a locally configured link is +used, this object represents a unique value, which is +locally defined in a router. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_index must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__link_index = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_index(self): + self.__link_index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="link-index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint64', is_config=True) + + + def _get_administrative_group(self): + """ + Getter method for administrative_group, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/administrative_group (te-types:admin-groups) + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + return self.__administrative_group + + def _set_administrative_group(self, v, load=False): + """ + Setter method for administrative_group, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/administrative_group (te-types:admin-groups) + If this variable is read-only (config: false) in the + source YANG file, then _set_administrative_group is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_administrative_group() directly. + + YANG Description: Administrative group or color of the link. +This attribute covers both administrative groups (defined +in RFCs 3630 and 5305) and Extended Administrative Groups +(defined in RFC 7308). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """administrative_group must be of a type compatible with te-types:admin-groups""", + 'defined-type': "te-types:admin-groups", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True)""", + }) + + self.__administrative_group = t + if hasattr(self, '_set'): + self._set() + + def _unset_administrative_group(self): + self.__administrative_group = YANGDynClass(base=[RestrictedClassType(base_type=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), restriction_dict={'length': ['1..11']}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}),], is_leaf=True, yang_name="administrative-group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:admin-groups', is_config=True) + + + def _get_interface_switching_capability(self): + """ + Getter method for interface_switching_capability, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability (list) + + YANG Description: List of ISCDs for this link. + """ + return self.__interface_switching_capability + + def _set_interface_switching_capability(self, v, load=False): + """ + Setter method for interface_switching_capability, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_interface_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interface_switching_capability() directly. + + YANG Description: List of ISCDs for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interface_switching_capability must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__interface_switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_interface_switching_capability(self): + self.__interface_switching_capability = YANGDynClass(base=YANGListType("switching_capability encoding",interface_switching_capability.interface_switching_capability, yang_name="interface-switching-capability", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='switching-capability encoding', extensions=None), is_container='list', yang_name="interface-switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_label_restrictions(self): + """ + Getter method for label_restrictions, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions (container) + + YANG Description: The label restrictions container. + """ + return self.__label_restrictions + + def _set_label_restrictions(self, v, load=False): + """ + Setter method for label_restrictions, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restrictions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restrictions() directly. + + YANG Description: The label restrictions container. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restrictions must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_restrictions = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restrictions(self): + self.__label_restrictions = YANGDynClass(base=label_restrictions.label_restrictions, is_container='container', yang_name="label-restrictions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_link_protection_type(self): + """ + Getter method for link_protection_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/link_protection_type (identityref) + + YANG Description: Link Protection Type desired for this link. + """ + return self.__link_protection_type + + def _set_link_protection_type(self, v, load=False): + """ + Setter method for link_protection_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/link_protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_protection_type() directly. + + YANG Description: Link Protection Type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__link_protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_protection_type(self): + self.__link_protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-shared': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:link-protection-enhanced': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="link-protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_max_link_bandwidth(self): + """ + Getter method for max_link_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth (container) + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + return self.__max_link_bandwidth + + def _set_max_link_bandwidth(self, v, load=False): + """ + Setter method for max_link_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_link_bandwidth() directly. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__max_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_link_bandwidth(self): + self.__max_link_bandwidth = YANGDynClass(base=max_link_bandwidth.max_link_bandwidth, is_container='container', yang_name="max-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_max_resv_link_bandwidth(self): + """ + Getter method for max_resv_link_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth (container) + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + return self.__max_resv_link_bandwidth + + def _set_max_resv_link_bandwidth(self, v, load=False): + """ + Setter method for max_resv_link_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_resv_link_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_resv_link_bandwidth() directly. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_resv_link_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__max_resv_link_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_resv_link_bandwidth(self): + self.__max_resv_link_bandwidth = YANGDynClass(base=max_resv_link_bandwidth.max_resv_link_bandwidth, is_container='container', yang_name="max-resv-link-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unreserved_bandwidth(self): + """ + Getter method for unreserved_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth (list) + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + return self.__unreserved_bandwidth + + def _set_unreserved_bandwidth(self, v, load=False): + """ + Setter method for unreserved_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_unreserved_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unreserved_bandwidth() directly. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unreserved_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__unreserved_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_unreserved_bandwidth(self): + self.__unreserved_bandwidth = YANGDynClass(base=YANGListType("priority",unreserved_bandwidth.unreserved_bandwidth, yang_name="unreserved-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="unreserved-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_te_default_metric(self): + """ + Getter method for te_default_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_default_metric (uint32) + + YANG Description: Traffic Engineering metric. + """ + return self.__te_default_metric + + def _set_te_default_metric(self, v, load=False): + """ + Setter method for te_default_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_default_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_default_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_default_metric() directly. + + YANG Description: Traffic Engineering metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_default_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_default_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_default_metric(self): + self.__te_default_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-default-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_delay_metric(self): + """ + Getter method for te_delay_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_delay_metric (uint32) + + YANG Description: Traffic Engineering delay metric. + """ + return self.__te_delay_metric + + def _set_te_delay_metric(self, v, load=False): + """ + Setter method for te_delay_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_delay_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_delay_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_delay_metric() directly. + + YANG Description: Traffic Engineering delay metric. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_delay_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_delay_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_delay_metric(self): + self.__te_delay_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-delay-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_igp_metric(self): + """ + Getter method for te_igp_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_igp_metric (uint32) + + YANG Description: IGP metric used for Traffic Engineering. + """ + return self.__te_igp_metric + + def _set_te_igp_metric(self, v, load=False): + """ + Setter method for te_igp_metric, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_igp_metric (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_igp_metric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_igp_metric() directly. + + YANG Description: IGP metric used for Traffic Engineering. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_igp_metric must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__te_igp_metric = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_igp_metric(self): + self.__te_igp_metric = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="te-igp-metric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_te_srlgs(self): + """ + Getter method for te_srlgs, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_srlgs (container) + + YANG Description: Contains a list of SRLGs. + """ + return self.__te_srlgs + + def _set_te_srlgs(self, v, load=False): + """ + Setter method for te_srlgs, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_srlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_srlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_srlgs() directly. + + YANG Description: Contains a list of SRLGs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_srlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_srlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_srlgs(self): + self.__te_srlgs = YANGDynClass(base=te_srlgs.te_srlgs, is_container='container', yang_name="te-srlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_te_nsrlgs(self): + """ + Getter method for te_nsrlgs, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_nsrlgs (container) + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + return self.__te_nsrlgs + + def _set_te_nsrlgs(self, v, load=False): + """ + Setter method for te_nsrlgs, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_nsrlgs (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_nsrlgs is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_nsrlgs() directly. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_nsrlgs must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_nsrlgs = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_nsrlgs(self): + self.__te_nsrlgs = YANGDynClass(base=te_nsrlgs.te_nsrlgs, is_container='container', yang_name="te-nsrlgs", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + access_type = __builtin__.property(_get_access_type, _set_access_type) + external_domain = __builtin__.property(_get_external_domain, _set_external_domain) + is_abstract = __builtin__.property(_get_is_abstract, _set_is_abstract) + name = __builtin__.property(_get_name, _set_name) + underlay = __builtin__.property(_get_underlay, _set_underlay) + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + link_index = __builtin__.property(_get_link_index, _set_link_index) + administrative_group = __builtin__.property(_get_administrative_group, _set_administrative_group) + interface_switching_capability = __builtin__.property(_get_interface_switching_capability, _set_interface_switching_capability) + label_restrictions = __builtin__.property(_get_label_restrictions, _set_label_restrictions) + link_protection_type = __builtin__.property(_get_link_protection_type, _set_link_protection_type) + max_link_bandwidth = __builtin__.property(_get_max_link_bandwidth, _set_max_link_bandwidth) + max_resv_link_bandwidth = __builtin__.property(_get_max_resv_link_bandwidth, _set_max_resv_link_bandwidth) + unreserved_bandwidth = __builtin__.property(_get_unreserved_bandwidth, _set_unreserved_bandwidth) + te_default_metric = __builtin__.property(_get_te_default_metric, _set_te_default_metric) + te_delay_metric = __builtin__.property(_get_te_delay_metric, _set_te_delay_metric) + te_igp_metric = __builtin__.property(_get_te_igp_metric, _set_te_igp_metric) + te_srlgs = __builtin__.property(_get_te_srlgs, _set_te_srlgs) + te_nsrlgs = __builtin__.property(_get_te_nsrlgs, _set_te_nsrlgs) + + + _pyangbind_elements = OrderedDict([('access_type', access_type), ('external_domain', external_domain), ('is_abstract', is_abstract), ('name', name), ('underlay', underlay), ('admin_status', admin_status), ('link_index', link_index), ('administrative_group', administrative_group), ('interface_switching_capability', interface_switching_capability), ('label_restrictions', label_restrictions), ('link_protection_type', link_protection_type), ('max_link_bandwidth', max_link_bandwidth), ('max_resv_link_bandwidth', max_resv_link_bandwidth), ('unreserved_bandwidth', unreserved_bandwidth), ('te_default_metric', te_default_metric), ('te_delay_metric', te_delay_metric), ('te_igp_metric', te_igp_metric), ('te_srlgs', te_srlgs), ('te_nsrlgs', te_nsrlgs), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/external_domain/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/external_domain/__init__.py new file mode 100644 index 000000000..9d40db380 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/external_domain/__init__.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class external_domain(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/external-domain. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For an inter-domain link, specifies the attributes of +the remote end of the link, to facilitate the signaling at +the local end. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__remote_te_node_id','__remote_te_link_tp_id',) + + _yang_name = 'external-domain' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__remote_te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + self.__remote_te_link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'external-domain'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_remote_te_node_id(self): + """ + Getter method for remote_te_node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/remote_te_node_id (te-types:te-node-id) + + YANG Description: Remote TE node identifier, used together with +'remote-te-link-tp-id' to identify the remote Link +Termination Point (LTP) in a different domain. + """ + return self.__remote_te_node_id + + def _set_remote_te_node_id(self, v, load=False): + """ + Setter method for remote_te_node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/remote_te_node_id (te-types:te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_remote_te_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_remote_te_node_id() directly. + + YANG Description: Remote TE node identifier, used together with +'remote-te-link-tp-id' to identify the remote Link +Termination Point (LTP) in a different domain. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """remote_te_node_id must be of a type compatible with te-types:te-node-id""", + 'defined-type': "te-types:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True)""", + }) + + self.__remote_te_node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_remote_te_node_id(self): + self.__remote_te_node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="remote-te-node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-node-id', is_config=True) + + + def _get_remote_te_link_tp_id(self): + """ + Getter method for remote_te_link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/remote_te_link_tp_id (te-types:te-tp-id) + + YANG Description: Remote TE LTP identifier, used together with +'remote-te-node-id' to identify the remote LTP in a +different domain. + """ + return self.__remote_te_link_tp_id + + def _set_remote_te_link_tp_id(self, v, load=False): + """ + Setter method for remote_te_link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/external_domain/remote_te_link_tp_id (te-types:te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_remote_te_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_remote_te_link_tp_id() directly. + + YANG Description: Remote TE LTP identifier, used together with +'remote-te-node-id' to identify the remote LTP in a +different domain. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """remote_te_link_tp_id must be of a type compatible with te-types:te-tp-id""", + 'defined-type': "te-types:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True)""", + }) + + self.__remote_te_link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_remote_te_link_tp_id(self): + self.__remote_te_link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="remote-te-link-tp-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-tp-id', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + remote_te_node_id = __builtin__.property(_get_remote_te_node_id, _set_remote_te_node_id) + remote_te_link_tp_id = __builtin__.property(_get_remote_te_link_tp_id, _set_remote_te_link_tp_id) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('remote_te_node_id', remote_te_node_id), ('remote_te_link_tp_id', remote_te_link_tp_id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/__init__.py new file mode 100644 index 000000000..ce33e949d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import max_lsp_bandwidth +class interface_switching_capability(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/interface-switching-capability. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of ISCDs for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__switching_capability','__encoding','__max_lsp_bandwidth',) + + _yang_name = 'interface-switching-capability' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'interface-switching-capability'] + + def _get_switching_capability(self): + """ + Getter method for switching_capability, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/switching_capability (identityref) + + YANG Description: Switching capability for this interface. + """ + return self.__switching_capability + + def _set_switching_capability(self, v, load=False): + """ + Setter method for switching_capability, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/switching_capability (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_switching_capability is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switching_capability() directly. + + YANG Description: Switching capability for this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switching_capability must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__switching_capability = t + if hasattr(self, '_set'): + self._set() + + def _unset_switching_capability(self): + self.__switching_capability = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-psc1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-evpl': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-l2sc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-tdm': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-otn': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-dcsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-lsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:switching-fsc': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="switching-capability", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_encoding(self): + """ + Getter method for encoding, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/encoding (identityref) + + YANG Description: Encoding supported by this interface. + """ + return self.__encoding + + def _set_encoding(self, v, load=False): + """ + Setter method for encoding, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/encoding (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_encoding is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_encoding() directly. + + YANG Description: Encoding supported by this interface. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """encoding must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__encoding = t + if hasattr(self, '_set'): + self._set() + + def _unset_encoding(self): + self.__encoding = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-packet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-ethernet': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-pdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-sdh': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-digital-wrapper': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-lambda': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-fiber-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-oduk': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-optical-channel': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-encoding-line': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="encoding", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_max_lsp_bandwidth(self): + """ + Getter method for max_lsp_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth (list) + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + return self.__max_lsp_bandwidth + + def _set_max_lsp_bandwidth(self, v, load=False): + """ + Setter method for max_lsp_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_lsp_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_lsp_bandwidth() directly. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_lsp_bandwidth must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__max_lsp_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_lsp_bandwidth(self): + self.__max_lsp_bandwidth = YANGDynClass(base=YANGListType("priority",max_lsp_bandwidth.max_lsp_bandwidth, yang_name="max-lsp-bandwidth", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='priority', extensions=None), is_container='list', yang_name="max-lsp-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + switching_capability = __builtin__.property(_get_switching_capability, _set_switching_capability) + encoding = __builtin__.property(_get_encoding, _set_encoding) + max_lsp_bandwidth = __builtin__.property(_get_max_lsp_bandwidth, _set_max_lsp_bandwidth) + + + _pyangbind_elements = OrderedDict([('switching_capability', switching_capability), ('encoding', encoding), ('max_lsp_bandwidth', max_lsp_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py new file mode 100644 index 000000000..976aba241 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_lsp_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/interface-switching-capability/max-lsp-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum Label Switched Path (LSP) bandwidth at +priorities 0-7. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'max-lsp-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + priority = __builtin__.property(_get_priority, _set_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..f4549d5df --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/interface-switching-capability/max-lsp-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_bandwidth']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..d630e8317 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/interface-switching-capability/max-lsp-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth attributes for OTN paths. + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__max_ts_number',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'interface-switching-capability', 'max-lsp-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_max_ts_number(self): + """ + Getter method for max_ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + return self.__max_ts_number + + def _set_max_ts_number(self, v, load=False): + """ + Setter method for max_ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/interface_switching_capability/max_lsp_bandwidth/te_bandwidth/otn/max_ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_ts_number() directly. + + YANG Description: The maximum number of Tributary Slots (TS) that could be +used by an ODUflex LSP. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__max_ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_ts_number(self): + self.__max_ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="max-ts-number", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + max_ts_number = __builtin__.property(_get_max_ts_number, _set_max_ts_number) + + __choices__ = {'technology': {'otn': ['odu_type', 'max_ts_number']}} + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('max_ts_number', max_ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/__init__.py new file mode 100644 index 000000000..c3f81b42b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_restriction +class label_restrictions(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The label restrictions container. + """ + __slots__ = ('_path_helper', '_extmethods', '__label_restriction',) + + _yang_name = 'label-restrictions' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions'] + + def _get_label_restriction(self): + """ + Getter method for label_restriction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction (list) + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + return self.__label_restriction + + def _set_label_restriction(self, v, load=False): + """ + Setter method for label_restriction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_restriction() directly. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_restriction must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__label_restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_restriction(self): + self.__label_restriction = YANGDynClass(base=YANGListType("index",label_restriction.label_restriction, yang_name="label-restriction", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="label-restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + label_restriction = __builtin__.property(_get_label_restriction, _set_label_restriction) + + + _pyangbind_elements = OrderedDict([('label_restriction', label_restriction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/__init__.py new file mode 100644 index 000000000..aff15591b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/__init__.py @@ -0,0 +1,450 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import label_start +from . import label_end +from . import label_step +from . import otn_label_range +from . import ethernet_label_range +class label_restriction(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The absence of the label restrictions container implies +that all labels are acceptable; otherwise, only restricted +labels are available. + """ + __slots__ = ('_path_helper', '_extmethods', '__restriction','__index','__label_start','__label_end','__label_step','__range_bitmap','__otn_label_range','__ethernet_label_range',) + + _yang_name = 'label-restriction' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction'] + + def _get_restriction(self): + """ + Getter method for restriction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/restriction (enumeration) + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + return self.__restriction + + def _set_restriction(self, v, load=False): + """ + Setter method for restriction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/restriction (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_restriction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_restriction() directly. + + YANG Description: Indicates whether the list item is inclusive or exclusive. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """restriction must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__restriction = t + if hasattr(self, '_set'): + self._set() + + def _unset_restriction(self): + self.__restriction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'inclusive': {}, 'exclusive': {}},), default=six.text_type("inclusive"), is_leaf=True, yang_name="restriction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/index (uint32) + + YANG Description: The index of the label restriction list entry. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the label restriction list entry. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_label_start(self): + """ + Getter method for label_start, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start (container) + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + return self.__label_start + + def _set_label_start(self, v, load=False): + """ + Setter method for label_start, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_start is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_start() directly. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_start must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_start = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_start(self): + self.__label_start = YANGDynClass(base=label_start.label_start, is_container='container', yang_name="label-start", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_end(self): + """ + Getter method for label_end, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end (container) + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + return self.__label_end + + def _set_label_end(self, v, load=False): + """ + Setter method for label_end, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_end is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_end() directly. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_end must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_end = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_end(self): + self.__label_end = YANGDynClass(base=label_end.label_end, is_container='container', yang_name="label-end", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_step(self): + """ + Getter method for label_step, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step (container) + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + return self.__label_step + + def _set_label_step(self, v, load=False): + """ + Setter method for label_step, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_step() directly. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_step must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_step(self): + self.__label_step = YANGDynClass(base=label_step.label_step, is_container='container', yang_name="label-step", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_range_bitmap(self): + """ + Getter method for range_bitmap, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + return self.__range_bitmap + + def _set_range_bitmap(self, v, load=False): + """ + Setter method for range_bitmap, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/range_bitmap (yang:hex-string) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_bitmap is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_bitmap() directly. + + YANG Description: When there are gaps between 'label-start' and 'label-end', +this attribute is used to specify the positions +of the used labels. This is represented in big endian as +'hex-string'. +The most significant byte in the hex-string is the farthest +to the left in the byte sequence. Leading zero bytes in the +configured value may be omitted for brevity. +Each bit position in the 'range-bitmap' 'hex-string' maps +to a label in the range derived from 'label-start'. + +For example, assuming that 'label-start' = 16000 and +'range-bitmap' = 0x01000001, then: + +- bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. +- bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_bitmap must be of a type compatible with yang:hex-string""", + 'defined-type': "yang:hex-string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True)""", + }) + + self.__range_bitmap = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_bitmap(self): + self.__range_bitmap = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'}), is_leaf=True, yang_name="range-bitmap", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='yang:hex-string', is_config=True) + + + def _get_otn_label_range(self): + """ + Getter method for otn_label_range, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range (container) + + YANG Description: Label range information for OTN. + """ + return self.__otn_label_range + + def _set_otn_label_range(self, v, load=False): + """ + Setter method for otn_label_range, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn_label_range() directly. + + YANG Description: Label range information for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn_label_range(self): + self.__otn_label_range = YANGDynClass(base=otn_label_range.otn_label_range, is_container='container', yang_name="otn-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_ethernet_label_range(self): + """ + Getter method for ethernet_label_range, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range (container) + + YANG Description: Ethernet-specific label range related information. + """ + return self.__ethernet_label_range + + def _set_ethernet_label_range(self, v, load=False): + """ + Setter method for ethernet_label_range, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet_label_range is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet_label_range() directly. + + YANG Description: Ethernet-specific label range related information. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet_label_range must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True)""", + }) + + self.__ethernet_label_range = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet_label_range(self): + self.__ethernet_label_range = YANGDynClass(base=ethernet_label_range.ethernet_label_range, is_container='container', yang_name="ethernet-label-range", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='container', is_config=True) + + restriction = __builtin__.property(_get_restriction, _set_restriction) + index = __builtin__.property(_get_index, _set_index) + label_start = __builtin__.property(_get_label_start, _set_label_start) + label_end = __builtin__.property(_get_label_end, _set_label_end) + label_step = __builtin__.property(_get_label_step, _set_label_step) + range_bitmap = __builtin__.property(_get_range_bitmap, _set_range_bitmap) + otn_label_range = __builtin__.property(_get_otn_label_range, _set_otn_label_range) + ethernet_label_range = __builtin__.property(_get_ethernet_label_range, _set_ethernet_label_range) + + + _pyangbind_elements = OrderedDict([('restriction', restriction), ('index', index), ('label_start', label_start), ('label_end', label_end), ('label_step', label_step), ('range_bitmap', range_bitmap), ('otn_label_range', otn_label_range), ('ethernet_label_range', ethernet_label_range), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py new file mode 100644 index 000000000..eae880f42 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class ethernet_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/ethernet-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet-specific label range related information. + """ + __slots__ = ('_path_helper', '_extmethods', '__tag_type','__priority',) + + _yang_name = 'ethernet-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'ethernet-label-range'] + + def _get_tag_type(self): + """ + Getter method for tag_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + + YANG Description: VLAN tag type. + """ + return self.__tag_type + + def _set_tag_type(self, v, load=False): + """ + Setter method for tag_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/tag_type (etht-types:eth-tag-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_tag_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tag_type() directly. + + YANG Description: VLAN tag type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tag_type must be of a type compatible with etht-types:eth-tag-type""", + 'defined-type': "etht-types:eth-tag-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True)""", + }) + + self.__tag_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_tag_type(self): + self.__tag_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:c-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 's-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'ietf-eth-tran-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}, 'etht-types:s-vlan-tag-type': {'@module': 'ietf-eth-tran-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-eth-tran-types'}},), is_leaf=True, yang_name="tag-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:eth-tag-type', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + + YANG Description: priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/ethernet_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: priority. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint8', is_config=True) + + tag_type = __builtin__.property(_get_tag_type, _set_tag_type) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('tag_type', tag_type), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py new file mode 100644 index 000000000..e9e68e828 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_end(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-end. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the ending label if a label range is specified. +This attribute is not set if a single label is specified. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-end' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py new file mode 100644 index 000000000..1fdead5d2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-end/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py new file mode 100644 index 000000000..c0cf47b54 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-end/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-end', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_end/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py new file mode 100644 index 000000000..c9b398df7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/__init__.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_start(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-start. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This is the starting label if a label range is specified. +This is the label value if a single label is specified, +in which case the 'label-end' attribute is not set. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-start' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py new file mode 100644 index 000000000..bbd976bc9 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-start/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn (container) + + YANG Description: Label start or label end for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label start or label end for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py new file mode 100644 index 000000000..900ca9468 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-start/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label start or label end for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-start', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + + YANG Description: Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_start/te_label/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py new file mode 100644 index 000000000..8b580328d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class label_step(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-step. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The step increment between labels in the label range. +The label start/end values will have to be consistent +with the sign of label step. For example, +'label-start' < 'label-end' enforces 'label-step' > 0 +'label-start' > 'label-end' enforces 'label-step' < 0. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_step',) + + _yang_name = 'label-step' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-step'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/generic (int32) + + YANG Description: Label range step. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/generic (int32) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Label range step. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with int32""", + 'defined-type': "int32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['-2147483648..2147483647']}, int_size=32)(1), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='int32', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn (container) + + YANG Description: Label step for OTN + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label step for OTN + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_step(self): + """ + Getter method for eth_step, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/eth_step (uint16) + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + return self.__eth_step + + def _set_eth_step(self, v, load=False): + """ + Setter method for eth_step, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/eth_step (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_step is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_step() directly. + + YANG Description: Label step which represent possible increments for +an Ethernet VLAN tag. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_step must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__eth_step = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_step(self): + self.__eth_step = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), default=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16)(1), is_leaf=True, yang_name="eth-step", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint16', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_step = __builtin__.property(_get_eth_step, _set_eth_step) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['eth_step']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_step', eth_step), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py new file mode 100644 index 000000000..d47950a6b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/label-step/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label step for OTN + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__ts',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'label-step', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Label step which represents possible increments for +Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('range-type', 'trib-port'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_ts(self): + """ + Getter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + return self.__ts + + def _set_ts(self, v, load=False): + """ + Setter method for ts, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/label_step/otn/ts (otn-ts) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts() directly. + + YANG Description: Label step which represents possible increments for +Tributary Slot (TS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts must be of a type compatible with otn-ts""", + 'defined-type': "ietf-otn-topology:otn-ts", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True)""", + }) + + self.__ts = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts(self): + self.__ts = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts", parent=self, choice=('range-type', 'trib-slot'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-ts', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + ts = __builtin__.property(_get_ts, _set_ts) + + __choices__ = {'range-type': {'trib-port': ['tpn'], 'trib-slot': ['ts']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('ts', ts), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py new file mode 100644 index 000000000..2a0404874 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/__init__.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn_label_range(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/label-restrictions/label-restriction/otn-label-range. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label range information for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__range_type','__tsg','__odu_type_list','__priority',) + + _yang_name = 'otn-label-range' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'label-restrictions', 'label-restriction', 'otn-label-range'] + + def _get_range_type(self): + """ + Getter method for range_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + return self.__range_type + + def _set_range_type(self, v, load=False): + """ + Setter method for range_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/range_type (otn-label-range-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_range_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_range_type() directly. + + YANG Description: The type of range (e.g., TPN or TS) +to which the label range applies + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """range_type must be of a type compatible with otn-label-range-type""", + 'defined-type': "ietf-otn-topology:otn-label-range-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True)""", + }) + + self.__range_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_range_type(self): + self.__range_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'trib-slot': {}, 'trib-port': {}},), is_leaf=True, yang_name="range-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-label-range-type', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary slot granularity (TSG) to which the label range +applies. + +This leaf MUST be present when the range-type is TS. + +This leaf MAY be omitted when mapping an ODUk over an OTUk +Link. In this case the range-type is tpn, with only one +entry (ODUk), and the tpn range has only one value (1). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_odu_type_list(self): + """ + Getter method for odu_type_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + return self.__odu_type_list + + def _set_odu_type_list(self, v, load=False): + """ + Setter method for odu_type_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/odu_type_list (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type_list() directly. + + YANG Description: List of ODU types to which the label range applies. + +An Empty odu-type-list means that the label range +applies to all the supported ODU types. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type_list must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type_list(self): + self.__odu_type_list = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},)), is_leaf=False, yang_name="odu-type-list", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/priority (uint8) + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/label_restrictions/label_restriction/otn_label_range/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority in Interface Switching Capability +Descriptor (ISCD). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint8', is_config=True) + + range_type = __builtin__.property(_get_range_type, _set_range_type) + tsg = __builtin__.property(_get_tsg, _set_tsg) + odu_type_list = __builtin__.property(_get_odu_type_list, _set_odu_type_list) + priority = __builtin__.property(_get_priority, _set_priority) + + + _pyangbind_elements = OrderedDict([('range_type', range_type), ('tsg', tsg), ('odu_type_list', odu_type_list), ('priority', priority), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/__init__.py new file mode 100644 index 000000000..d5fb70e3a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum bandwidth that can be seen on this link in this +direction. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..1d86069ed --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..4528f641f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..f17480835 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/__init__.py new file mode 100644 index 000000000..7f16f359f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/__init__.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class max_resv_link_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-resv-link-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Maximum amount of bandwidth that can be reserved in this +direction in this link. Units are in bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_bandwidth',) + + _yang_name = 'max-resv-link-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-resv-link-bandwidth'] + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..f781d9af5 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-resv-link-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..eee723135 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-resv-link-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..98d18da30 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/max-resv-link-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'max-resv-link-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/max_resv_link_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_nsrlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_nsrlgs/__init__.py new file mode 100644 index 000000000..a3ab4519d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_nsrlgs/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_nsrlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/te-nsrlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of NSRLGs (Non-Shared Risk Link Groups). +When an abstract TE link is configured, this list specifies +the request that underlay TE paths need to be mutually +disjoint with other TE links in the same groups. + """ + __slots__ = ('_path_helper', '_extmethods', '__id',) + + _yang_name = 'te-nsrlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'te-nsrlgs'] + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_nsrlgs/id (uint32) + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_nsrlgs/id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: NSRLG ID, uniquely configured within a topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + id = __builtin__.property(_get_id, _set_id) + + + _pyangbind_elements = OrderedDict([('id', id), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_srlgs/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_srlgs/__init__.py new file mode 100644 index 000000000..65f81a17e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/te_srlgs/__init__.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class te_srlgs(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/te-srlgs. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains a list of SRLGs. + """ + __slots__ = ('_path_helper', '_extmethods', '__value',) + + _yang_name = 'te-srlgs' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'te-srlgs'] + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_srlgs/value (te-types:srlg) + + YANG Description: SRLG value. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/te_srlgs/value (te-types:srlg) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: SRLG value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with te-types:srlg""", + 'defined-type': "te-types:srlg", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(unique=True, base=TypedListType(allowed_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)), is_leaf=False, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:srlg', is_config=True) + + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('value', value), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/__init__.py new file mode 100644 index 000000000..a1b69d2e2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/__init__.py @@ -0,0 +1,326 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import primary_path +from . import backup_path +from . import tunnel_termination_points +from . import tunnels +class underlay(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Attributes of the TE link underlay. + """ + __slots__ = ('_path_helper', '_extmethods', '__enabled','__primary_path','__backup_path','__protection_type','__tunnel_termination_points','__tunnels',) + + _yang_name = 'underlay' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay'] + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/enabled (boolean) + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: 'true' if the underlay is enabled. +'false' if the underlay is disabled. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_primary_path(self): + """ + Getter method for primary_path, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path (container) + + YANG Description: The service path on the underlay topology that +supports this link. + """ + return self.__primary_path + + def _set_primary_path(self, v, load=False): + """ + Setter method for primary_path, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_primary_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_primary_path() directly. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """primary_path must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__primary_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_primary_path(self): + self.__primary_path = YANGDynClass(base=primary_path.primary_path, is_container='container', yang_name="primary-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_backup_path(self): + """ + Getter method for backup_path, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path (list) + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + return self.__backup_path + + def _set_backup_path(self, v, load=False): + """ + Setter method for backup_path, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_backup_path is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backup_path() directly. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backup_path must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__backup_path = t + if hasattr(self, '_set'): + self._set() + + def _unset_backup_path(self): + self.__backup_path = YANGDynClass(base=YANGListType("index",backup_path.backup_path, yang_name="backup-path", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="backup-path", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + + def _get_protection_type(self): + """ + Getter method for protection_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/protection_type (identityref) + + YANG Description: Underlay protection type desired for this link. + """ + return self.__protection_type + + def _set_protection_type(self, v, load=False): + """ + Setter method for protection_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/protection_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_protection_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_protection_type() directly. + + YANG Description: Underlay protection type desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """protection_type must be of a type compatible with identityref""", + 'defined-type': "ietf-te-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True)""", + }) + + self.__protection_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_protection_type(self): + self.__protection_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unprotected': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute-extra': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-reroute': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-n': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-1-for-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-unidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-bidir-1-plus-1': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'ietf-te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}, 'te-types:lsp-protection-extra-traffic': {'@module': 'ietf-te-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-te-types'}},), is_leaf=True, yang_name="protection-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='identityref', is_config=True) + + + def _get_tunnel_termination_points(self): + """ + Getter method for tunnel_termination_points, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points (container) + + YANG Description: Underlay TTPs desired for this link. + """ + return self.__tunnel_termination_points + + def _set_tunnel_termination_points(self, v, load=False): + """ + Setter method for tunnel_termination_points, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_termination_points is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_termination_points() directly. + + YANG Description: Underlay TTPs desired for this link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_termination_points must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnel_termination_points = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_termination_points(self): + self.__tunnel_termination_points = YANGDynClass(base=tunnel_termination_points.tunnel_termination_points, is_container='container', yang_name="tunnel-termination-points", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_tunnels(self): + """ + Getter method for tunnels, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels (container) + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + return self.__tunnels + + def _set_tunnels(self, v, load=False): + """ + Setter method for tunnels, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnels() directly. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnels must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__tunnels = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnels(self): + self.__tunnels = YANGDynClass(base=tunnels.tunnels, is_container='container', yang_name="tunnels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + enabled = __builtin__.property(_get_enabled, _set_enabled) + primary_path = __builtin__.property(_get_primary_path, _set_primary_path) + backup_path = __builtin__.property(_get_backup_path, _set_backup_path) + protection_type = __builtin__.property(_get_protection_type, _set_protection_type) + tunnel_termination_points = __builtin__.property(_get_tunnel_termination_points, _set_tunnel_termination_points) + tunnels = __builtin__.property(_get_tunnels, _set_tunnels) + + + _pyangbind_elements = OrderedDict([('enabled', enabled), ('primary_path', primary_path), ('backup_path', backup_path), ('protection_type', protection_type), ('tunnel_termination_points', tunnel_termination_points), ('tunnels', tunnels), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/__init__.py new file mode 100644 index 000000000..fe3e9714f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/__init__.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class backup_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of backup service paths on the underlay topology that +protect the underlay primary path. If the primary path is +not protected, the list contains zero elements. If the +primary path is protected, the list contains one or more +elements. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__network_ref','__path_element',) + + _yang_name = 'backup-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/index (uint32) + + YANG Description: A sequence number to identify a backup path. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: A sequence number to identify a backup path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element (list) + + YANG Description: A list of path elements describing the backup service +path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the backup service +path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('index', index), ('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/__init__.py new file mode 100644 index 000000000..62e01431a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/__init__.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the backup service +path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..25cce7314 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..602bbac44 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..1cfac3e4f --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..7510f12e3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..ebe98f0b0 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..204c0ffd8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..49f6d8166 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/backup-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'backup-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/backup_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/__init__.py new file mode 100644 index 000000000..111fdc4e3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/__init__.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import path_element +class primary_path(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The service path on the underlay topology that +supports this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref','__path_element',) + + _yang_name = 'primary-path' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + + def _get_path_element(self): + """ + Getter method for path_element, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element (list) + + YANG Description: A list of path elements describing the service path. + """ + return self.__path_element + + def _set_path_element(self, v, load=False): + """ + Setter method for path_element, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element() directly. + + YANG Description: A list of path elements describing the service path. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__path_element = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element(self): + self.__path_element = YANGDynClass(base=YANGListType("path_element_id",path_element.path_element, yang_name="path-element", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='path-element-id', extensions=None), is_container='list', yang_name="path-element", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + path_element = __builtin__.property(_get_path_element, _set_path_element) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ('path_element', path_element), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/__init__.py new file mode 100644 index 000000000..71c1bd0cc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/__init__.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import numbered_node_hop +from . import numbered_link_hop +from . import unnumbered_link_hop +from . import as_number_hop +from . import label_hop +class path_element(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A list of path elements describing the service path. + """ + __slots__ = ('_path_helper', '_extmethods', '__path_element_id','__numbered_node_hop','__numbered_link_hop','__unnumbered_link_hop','__as_number_hop','__label_hop',) + + _yang_name = 'path-element' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element'] + + def _get_path_element_id(self): + """ + Getter method for path_element_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/path_element_id (uint32) + + YANG Description: To identify the element in a path. + """ + return self.__path_element_id + + def _set_path_element_id(self, v, load=False): + """ + Setter method for path_element_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/path_element_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_path_element_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_path_element_id() directly. + + YANG Description: To identify the element in a path. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """path_element_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__path_element_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_path_element_id(self): + self.__path_element_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="path-element-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_numbered_node_hop(self): + """ + Getter method for numbered_node_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop (container) + + YANG Description: Numbered node route hop. + """ + return self.__numbered_node_hop + + def _set_numbered_node_hop(self, v, load=False): + """ + Setter method for numbered_node_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_node_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_node_hop() directly. + + YANG Description: Numbered node route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_node_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_node_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_node_hop(self): + self.__numbered_node_hop = YANGDynClass(base=numbered_node_hop.numbered_node_hop, is_container='container', yang_name="numbered-node-hop", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_numbered_link_hop(self): + """ + Getter method for numbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop (container) + + YANG Description: Numbered link explicit route hop. + """ + return self.__numbered_link_hop + + def _set_numbered_link_hop(self, v, load=False): + """ + Setter method for numbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_numbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_numbered_link_hop() directly. + + YANG Description: Numbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """numbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__numbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_numbered_link_hop(self): + self.__numbered_link_hop = YANGDynClass(base=numbered_link_hop.numbered_link_hop, is_container='container', yang_name="numbered-link-hop", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_unnumbered_link_hop(self): + """ + Getter method for unnumbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop (container) + + YANG Description: Unnumbered link explicit route hop. + """ + return self.__unnumbered_link_hop + + def _set_unnumbered_link_hop(self, v, load=False): + """ + Setter method for unnumbered_link_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_unnumbered_link_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unnumbered_link_hop() directly. + + YANG Description: Unnumbered link explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unnumbered_link_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__unnumbered_link_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_unnumbered_link_hop(self): + self.__unnumbered_link_hop = YANGDynClass(base=unnumbered_link_hop.unnumbered_link_hop, is_container='container', yang_name="unnumbered-link-hop", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_as_number_hop(self): + """ + Getter method for as_number_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop (container) + + YANG Description: AS explicit route hop. + """ + return self.__as_number_hop + + def _set_as_number_hop(self, v, load=False): + """ + Setter method for as_number_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number_hop() directly. + + YANG Description: AS explicit route hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__as_number_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number_hop(self): + self.__as_number_hop = YANGDynClass(base=as_number_hop.as_number_hop, is_container='container', yang_name="as-number-hop", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + + def _get_label_hop(self): + """ + Getter method for label_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop (container) + + YANG Description: Label hop type. + """ + return self.__label_hop + + def _set_label_hop(self, v, load=False): + """ + Setter method for label_hop, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_label_hop is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_label_hop() directly. + + YANG Description: Label hop type. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """label_hop must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__label_hop = t + if hasattr(self, '_set'): + self._set() + + def _unset_label_hop(self): + self.__label_hop = YANGDynClass(base=label_hop.label_hop, is_container='container', yang_name="label-hop", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + path_element_id = __builtin__.property(_get_path_element_id, _set_path_element_id) + numbered_node_hop = __builtin__.property(_get_numbered_node_hop, _set_numbered_node_hop) + numbered_link_hop = __builtin__.property(_get_numbered_link_hop, _set_numbered_link_hop) + unnumbered_link_hop = __builtin__.property(_get_unnumbered_link_hop, _set_unnumbered_link_hop) + as_number_hop = __builtin__.property(_get_as_number_hop, _set_as_number_hop) + label_hop = __builtin__.property(_get_label_hop, _set_label_hop) + + __choices__ = {'type': {'numbered-node-hop': ['numbered_node_hop'], 'numbered-link-hop': ['numbered_link_hop'], 'unnumbered-link-hop': ['unnumbered_link_hop'], 'as-number': ['as_number_hop'], 'label': ['label_hop']}} + _pyangbind_elements = OrderedDict([('path_element_id', path_element_id), ('numbered_node_hop', numbered_node_hop), ('numbered_link_hop', numbered_link_hop), ('unnumbered_link_hop', unnumbered_link_hop), ('as_number_hop', as_number_hop), ('label_hop', label_hop), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py new file mode 100644 index 000000000..37b1d287a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class as_number_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/as-number-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: AS explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__as_number','__hop_type',) + + _yang_name = 'as-number-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'as-number-hop'] + + def _get_as_number(self): + """ + Getter method for as_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + + YANG Description: The Autonomous System (AS) number. + """ + return self.__as_number + + def _set_as_number(self, v, load=False): + """ + Setter method for as_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/as_number (inet:as-number) + If this variable is read-only (config: false) in the + source YANG file, then _set_as_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_as_number() directly. + + YANG Description: The Autonomous System (AS) number. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """as_number must be of a type compatible with inet:as-number""", + 'defined-type': "inet:as-number", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True)""", + }) + + self.__as_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_as_number(self): + self.__as_number = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="as-number", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:as-number', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/as_number_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'as-number'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + as_number = __builtin__.property(_get_as_number, _set_as_number) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'as-number': ['as_number', 'hop_type']}} + _pyangbind_elements = OrderedDict([('as_number', as_number), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py new file mode 100644 index 000000000..d2a98a8c6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_label +class label_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/label-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop type. + """ + __slots__ = ('_path_helper', '_extmethods', '__te_label',) + + _yang_name = 'label-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop'] + + def _get_te_label(self): + """ + Getter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label (container) + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + return self.__te_label + + def _set_te_label(self, v, load=False): + """ + Setter method for te_label, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_label is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_label() directly. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_label must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_label = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_label(self): + self.__te_label = YANGDynClass(base=te_label.te_label, is_container='container', yang_name="te-label", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + te_label = __builtin__.property(_get_te_label, _set_te_label) + + __choices__ = {'type': {'label': ['te_label']}} + _pyangbind_elements = OrderedDict([('te_label', te_label), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py new file mode 100644 index 000000000..b61128cae --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/__init__.py @@ -0,0 +1,234 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_label(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/label-hop/te-label. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies the TE label. The choices can +be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__vlanid','__direction',) + + _yang_name = 'te-label' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + + YANG Description: TE label specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/generic (rt-types:generalized-label) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: TE label specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with rt-types:generalized-label""", + 'defined-type': "rt-types:generalized-label", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='rt-types:generalized-label', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn (container) + + YANG Description: Label hop for OTN. + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Label hop for OTN. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_vlanid(self): + """ + Getter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + + YANG Description: VLAN tag id. + """ + return self.__vlanid + + def _set_vlanid(self, v, load=False): + """ + Setter method for vlanid, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/vlanid (etht-types:vlanid) + If this variable is read-only (config: false) in the + source YANG file, then _set_vlanid is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_vlanid() directly. + + YANG Description: VLAN tag id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """vlanid must be of a type compatible with etht-types:vlanid""", + 'defined-type': "etht-types:vlanid", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True)""", + }) + + self.__vlanid = t + if hasattr(self, '_set'): + self._set() + + def _unset_vlanid(self): + self.__vlanid = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4094']}), is_leaf=True, yang_name="vlanid", parent=self, choice=('technology', 'eth'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='etht-types:vlanid', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + + YANG Description: Label direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/direction (te-label-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Label direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-label-direction""", + 'defined-type': "ietf-te-topology:te-label-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'forward': {}, 'reverse': {}},), default=six.text_type("forward"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'label'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-label-direction', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + vlanid = __builtin__.property(_get_vlanid, _set_vlanid) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'technology': {'generic': ['generic'], 'otn': ['otn'], 'eth': ['vlanid']}, 'type': {'label': ['direction']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('vlanid', vlanid), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py new file mode 100644 index 000000000..c629a4834 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/__init__.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/label-hop/te-label/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Label hop for OTN. + """ + __slots__ = ('_path_helper', '_extmethods', '__tpn','__tsg','__ts_list',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'label-hop', 'te-label', 'otn'] + + def _get_tpn(self): + """ + Getter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + + YANG Description: Tributary Port Number (TPN). + """ + return self.__tpn + + def _set_tpn(self, v, load=False): + """ + Setter method for tpn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tpn (otn-tpn) + If this variable is read-only (config: false) in the + source YANG file, then _set_tpn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tpn() directly. + + YANG Description: Tributary Port Number (TPN). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tpn must be of a type compatible with otn-tpn""", + 'defined-type': "ietf-otn-topology:otn-tpn", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True)""", + }) + + self.__tpn = t + if hasattr(self, '_set'): + self._set() + + def _unset_tpn(self): + self.__tpn = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="tpn", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='otn-tpn', is_config=True) + + + def _get_tsg(self): + """ + Getter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + + YANG Description: Tributary Slot Granularity (TSG). + """ + return self.__tsg + + def _set_tsg(self, v, load=False): + """ + Setter method for tsg, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/tsg (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_tsg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tsg() directly. + + YANG Description: Tributary Slot Granularity (TSG). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tsg must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__tsg = t + if hasattr(self, '_set'): + self._set() + + def _unset_tsg(self): + self.__tsg = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-1.25G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-2.5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:tsg-5G': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="tsg", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_ts_list(self): + """ + Getter method for ts_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + return self.__ts_list + + def _set_ts_list(self, v, load=False): + """ + Setter method for ts_list, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/label_hop/te_label/otn/ts_list (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_list is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_list() directly. + + YANG Description: A list of available Tributary Slots (TS) ranging + + + + +between 1 and 4095. If multiple values or +ranges are given, they all MUST be disjoint +and MUST be in ascending order. +For example 1-20,25,50-1000. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_list must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True)""", + }) + + self.__ts_list = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_list(self): + self.__ts_list = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)'}), is_leaf=True, yang_name="ts-list", parent=self, choice=('technology', 'otn'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='string', is_config=True) + + tpn = __builtin__.property(_get_tpn, _set_tpn) + tsg = __builtin__.property(_get_tsg, _set_tsg) + ts_list = __builtin__.property(_get_ts_list, _set_ts_list) + + __choices__ = {'technology': {'otn': ['tpn', 'tsg', 'ts_list']}} + _pyangbind_elements = OrderedDict([('tpn', tpn), ('tsg', tsg), ('ts_list', ts_list), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py new file mode 100644 index 000000000..b3b44095b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/__init__.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/numbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__hop_type','__direction',) + + _yang_name = 'numbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'numbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE Link Termination Point (LTP) identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'numbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'numbered-link-hop': ['link_tp_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py new file mode 100644 index 000000000..4e0f06397 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class numbered_node_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/numbered-node-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Numbered node route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__hop_type',) + + _yang_name = 'numbered-node-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'numbered-node-hop'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/numbered_node_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'numbered-node-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + + __choices__ = {'type': {'numbered-node-hop': ['node_id', 'hop_type']}} + _pyangbind_elements = OrderedDict([('node_id', node_id), ('hop_type', hop_type), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py new file mode 100644 index 000000000..6f04ec7fc --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/__init__.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class unnumbered_link_hop(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/primary-path/path-element/unnumbered-link-hop. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unnumbered link explicit route hop. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_tp_id','__node_id','__hop_type','__direction',) + + _yang_name = 'unnumbered-link-hop' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'primary-path', 'path-element', 'unnumbered-link-hop'] + + def _get_link_tp_id(self): + """ + Getter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + return self.__link_tp_id + + def _set_link_tp_id(self, v, load=False): + """ + Setter method for link_tp_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/link_tp_id (te-tp-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_tp_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_tp_id() directly. + + YANG Description: TE LTP identifier. The combination of the TE link ID +and the TE node ID is used to identify an unnumbered +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_tp_id must be of a type compatible with te-tp-id""", + 'defined-type': "ietf-te-topology:te-tp-id", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True)""", + }) + + self.__link_tp_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_tp_id(self): + self.__link_tp_id = YANGDynClass(base=[RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),], is_leaf=True, yang_name="link-tp-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-tp-id', is_config=True) + + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + + YANG Description: The identifier of a node in the TE topology. + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/node_id (te-node-id) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + + YANG Description: The identifier of a node in the TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with te-node-id""", + 'defined-type': "ietf-te-topology:te-node-id", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'}), is_leaf=True, yang_name="node-id", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-node-id', is_config=True) + + + def _get_hop_type(self): + """ + Getter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + + YANG Description: Strict or loose hop. + """ + return self.__hop_type + + def _set_hop_type(self, v, load=False): + """ + Setter method for hop_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/hop_type (te-hop-type) + If this variable is read-only (config: false) in the + source YANG file, then _set_hop_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hop_type() directly. + + YANG Description: Strict or loose hop. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hop_type must be of a type compatible with te-hop-type""", + 'defined-type': "ietf-te-topology:te-hop-type", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True)""", + }) + + self.__hop_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_hop_type(self): + self.__hop_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'loose': {}, 'strict': {}},), default=six.text_type("strict"), is_leaf=True, yang_name="hop-type", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-hop-type', is_config=True) + + + def _get_direction(self): + """ + Getter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + + YANG Description: Link route object direction. + """ + return self.__direction + + def _set_direction(self, v, load=False): + """ + Setter method for direction, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/primary_path/path_element/unnumbered_link_hop/direction (te-link-direction) + If this variable is read-only (config: false) in the + source YANG file, then _set_direction is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_direction() directly. + + YANG Description: Link route object direction. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """direction must be of a type compatible with te-link-direction""", + 'defined-type': "ietf-te-topology:te-link-direction", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True)""", + }) + + self.__direction = t + if hasattr(self, '_set'): + self._set() + + def _unset_direction(self): + self.__direction = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'incoming': {}, 'outgoing': {}},), default=six.text_type("outgoing"), is_leaf=True, yang_name="direction", parent=self, choice=('type', 'unnumbered-link-hop'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-link-direction', is_config=True) + + link_tp_id = __builtin__.property(_get_link_tp_id, _set_link_tp_id) + node_id = __builtin__.property(_get_node_id, _set_node_id) + hop_type = __builtin__.property(_get_hop_type, _set_hop_type) + direction = __builtin__.property(_get_direction, _set_direction) + + __choices__ = {'type': {'unnumbered-link-hop': ['link_tp_id', 'node_id', 'hop_type', 'direction']}} + _pyangbind_elements = OrderedDict([('link_tp_id', link_tp_id), ('node_id', node_id), ('hop_type', hop_type), ('direction', direction), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/__init__.py new file mode 100644 index 000000000..801aa8c42 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/__init__.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel_termination_points(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/tunnel-termination-points. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TTPs desired for this link. + """ + __slots__ = ('_path_helper', '_extmethods', '__source','__destination',) + + _yang_name = 'tunnel-termination-points' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'tunnel-termination-points'] + + def _get_source(self): + """ + Getter method for source, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/source (binary) + + YANG Description: Source TTP identifier. + """ + return self.__source + + def _set_source(self, v, load=False): + """ + Setter method for source, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/source (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_source is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source() directly. + + YANG Description: Source TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__source = t + if hasattr(self, '_set'): + self._set() + + def _unset_source(self): + self.__source = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="source", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + + def _get_destination(self): + """ + Getter method for destination, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/destination (binary) + + YANG Description: Destination TTP identifier. + """ + return self.__destination + + def _set_destination(self, v, load=False): + """ + Setter method for destination, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnel_termination_points/destination (binary) + If this variable is read-only (config: false) in the + source YANG file, then _set_destination is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_destination() directly. + + YANG Description: Destination TTP identifier. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """destination must be of a type compatible with binary""", + 'defined-type': "binary", + 'generated-type': """YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True)""", + }) + + self.__destination = t + if hasattr(self, '_set'): + self._set() + + def _unset_destination(self): + self.__destination = YANGDynClass(base=YANGBinary, is_leaf=True, yang_name="destination", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='binary', is_config=True) + + source = __builtin__.property(_get_source, _set_source) + destination = __builtin__.property(_get_destination, _set_destination) + + + _pyangbind_elements = OrderedDict([('source', source), ('destination', destination), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/__init__.py new file mode 100644 index 000000000..e2a5a218a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import tunnel +class tunnels(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/tunnels. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Underlay TE tunnels supporting this TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__sharing','__tunnel',) + + _yang_name = 'tunnels' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'tunnels'] + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. +This leaf is the default option for all TE tunnels +and may be overridden by the per-TE-tunnel value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + + def _get_tunnel(self): + """ + Getter method for tunnel, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel (list) + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + return self.__tunnel + + def _set_tunnel(self, v, load=False): + """ + Setter method for tunnel, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel() directly. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True)""", + }) + + self.__tunnel = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel(self): + self.__tunnel = YANGDynClass(base=YANGListType("tunnel_name",tunnel.tunnel, yang_name="tunnel", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='tunnel-name', extensions=None), is_container='list', yang_name="tunnel", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='list', is_config=True) + + sharing = __builtin__.property(_get_sharing, _set_sharing) + tunnel = __builtin__.property(_get_tunnel, _set_tunnel) + + + _pyangbind_elements = OrderedDict([('sharing', sharing), ('tunnel', tunnel), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/__init__.py new file mode 100644 index 000000000..24bfd8831 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/__init__.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class tunnel(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/underlay/tunnels/tunnel. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Zero, one, or more underlay TE tunnels that support this +TE link. + """ + __slots__ = ('_path_helper', '_extmethods', '__tunnel_name','__sharing',) + + _yang_name = 'tunnel' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'underlay', 'tunnels', 'tunnel'] + + def _get_tunnel_name(self): + """ + Getter method for tunnel_name, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/tunnel_name (string) + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + return self.__tunnel_name + + def _set_tunnel_name(self, v, load=False): + """ + Setter method for tunnel_name, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/tunnel_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_tunnel_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tunnel_name() directly. + + YANG Description: A tunnel name uniquely identifies an underlay TE tunnel, +used together with the 'source-node' value for this +link. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tunnel_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__tunnel_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_tunnel_name(self): + self.__tunnel_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="tunnel-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_sharing(self): + """ + Getter method for sharing, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/sharing (boolean) + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + return self.__sharing + + def _set_sharing(self, v, load=False): + """ + Setter method for sharing, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/underlay/tunnels/tunnel/sharing (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_sharing is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_sharing() directly. + + YANG Description: 'true' if the underlay tunnel can be shared with other +TE links; +'false' if the underlay tunnel is dedicated to this +TE link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """sharing must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True)""", + }) + + self.__sharing = t + if hasattr(self, '_set'): + self._set() + + def _unset_sharing(self): + self.__sharing = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="sharing", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='boolean', is_config=True) + + tunnel_name = __builtin__.property(_get_tunnel_name, _set_tunnel_name) + sharing = __builtin__.property(_get_sharing, _set_sharing) + + + _pyangbind_elements = OrderedDict([('tunnel_name', tunnel_name), ('sharing', sharing), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/__init__.py new file mode 100644 index 000000000..47c06f99e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/__init__.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_bandwidth +class unreserved_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/unreserved-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Unreserved bandwidth for priority levels 0-7. Units are in +bytes per second. + """ + __slots__ = ('_path_helper', '_extmethods', '__priority','__te_bandwidth',) + + _yang_name = 'unreserved-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'unreserved-bandwidth'] + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/priority (uint8) + + YANG Description: Priority. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/priority (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: Priority. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), restriction_dict={'range': ['0..7']}), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint8', is_config=True) + + + def _get_te_bandwidth(self): + """ + Getter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth (container) + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + return self.__te_bandwidth + + def _set_te_bandwidth(self, v, load=False): + """ + Setter method for te_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_bandwidth() directly. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_bandwidth must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_bandwidth(self): + self.__te_bandwidth = YANGDynClass(base=te_bandwidth.te_bandwidth, is_container='container', yang_name="te-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + priority = __builtin__.property(_get_priority, _set_priority) + te_bandwidth = __builtin__.property(_get_te_bandwidth, _set_te_bandwidth) + + + _pyangbind_elements = OrderedDict([('priority', priority), ('te_bandwidth', te_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py new file mode 100644 index 000000000..35527bd35 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/__init__.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import otn +class te_bandwidth(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/unreserved-bandwidth/te-bandwidth. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Container that specifies TE bandwidth. The choices +can be augmented for specific data-plane technologies. + """ + __slots__ = ('_path_helper', '_extmethods', '__generic','__otn','__eth_bandwidth',) + + _yang_name = 'te-bandwidth' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth'] + + def _get_generic(self): + """ + Getter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + + YANG Description: Bandwidth specified in a generic format. + """ + return self.__generic + + def _set_generic(self, v, load=False): + """ + Setter method for generic, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/generic (te-bandwidth) + If this variable is read-only (config: false) in the + source YANG file, then _set_generic is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_generic() directly. + + YANG Description: Bandwidth specified in a generic format. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """generic must be of a type compatible with te-bandwidth""", + 'defined-type': "ietf-te-topology:te-bandwidth", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True)""", + }) + + self.__generic = t + if hasattr(self, '_set'): + self._set() + + def _unset_generic(self): + self.__generic = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+(,(0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)|0[xX][\\da-fA-F]{1,8}|\\d+))*'}), is_leaf=True, yang_name="generic", parent=self, choice=('technology', 'generic'), path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-bandwidth', is_config=True) + + + def _get_otn(self): + """ + Getter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn (container) + + YANG Description: Bandwidth attributes for OTN links + """ + return self.__otn + + def _set_otn(self, v, load=False): + """ + Setter method for otn, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_otn is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_otn() directly. + + YANG Description: Bandwidth attributes for OTN links + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """otn must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True)""", + }) + + self.__otn = t + if hasattr(self, '_set'): + self._set() + + def _unset_otn(self): + self.__otn = YANGDynClass(base=otn.otn, is_container='container', yang_name="otn", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='container', is_config=True) + + + def _get_eth_bandwidth(self): + """ + Getter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + + YANG Description: Available bandwith value expressed in kilobits per second + """ + return self.__eth_bandwidth + + def _set_eth_bandwidth(self, v, load=False): + """ + Setter method for eth_bandwidth, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/eth_bandwidth (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_eth_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_eth_bandwidth() directly. + + YANG Description: Available bandwith value expressed in kilobits per second + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """eth_bandwidth must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True)""", + }) + + self.__eth_bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_eth_bandwidth(self): + self.__eth_bandwidth = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), restriction_dict={'range': ['0..10000000000']}), is_leaf=True, yang_name="eth-bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-eth-te-topology', defining_module='ietf-eth-te-topology', yang_type='uint64', is_config=True) + + generic = __builtin__.property(_get_generic, _set_generic) + otn = __builtin__.property(_get_otn, _set_otn) + eth_bandwidth = __builtin__.property(_get_eth_bandwidth, _set_eth_bandwidth) + + __choices__ = {'technology': {'generic': ['generic']}} + _pyangbind_elements = OrderedDict([('generic', generic), ('otn', otn), ('eth_bandwidth', eth_bandwidth), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py new file mode 100644 index 000000000..9f57b381b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import odulist +class otn(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/unreserved-bandwidth/te-bandwidth/otn. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Bandwidth attributes for OTN links + """ + __slots__ = ('_path_helper', '_extmethods', '__odulist',) + + _yang_name = 'otn' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth', 'otn'] + + def _get_odulist(self): + """ + Getter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + + YANG Description: OTN bandwidth definition + """ + return self.__odulist + + def _set_odulist(self, v, load=False): + """ + Setter method for odulist, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_odulist is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odulist() directly. + + YANG Description: OTN bandwidth definition + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odulist must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True)""", + }) + + self.__odulist = t + if hasattr(self, '_set'): + self._set() + + def _unset_odulist(self): + self.__odulist = YANGDynClass(base=YANGListType("odu_type",odulist.odulist, yang_name="odulist", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='odu-type', extensions=None), is_container='list', yang_name="odulist", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='list', is_config=True) + + odulist = __builtin__.property(_get_odulist, _set_odulist) + + + _pyangbind_elements = OrderedDict([('odulist', odulist), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py new file mode 100644 index 000000000..67eca2bd3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/__init__.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class odulist(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/link-template/te-link-attributes/unreserved-bandwidth/te-bandwidth/otn/odulist. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: OTN bandwidth definition + """ + __slots__ = ('_path_helper', '_extmethods', '__odu_type','__number','__ts_number',) + + _yang_name = 'odulist' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'link-template', 'te-link-attributes', 'unreserved-bandwidth', 'te-bandwidth', 'otn', 'odulist'] + + def _get_odu_type(self): + """ + Getter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + + YANG Description: ODU type + """ + return self.__odu_type + + def _set_odu_type(self, v, load=False): + """ + Setter method for odu_type, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/odu_type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_odu_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_odu_type() directly. + + YANG Description: ODU type + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """odu_type must be of a type compatible with identityref""", + 'defined-type': "ietf-otn-topology:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True)""", + }) + + self.__odu_type = t + if hasattr(self, '_set'): + self._set() + + def _unset_odu_type(self): + self.__odu_type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU0': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU1': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU2e': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU3': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODU4': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'ietf-layer1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}, 'l1-types:ODUflex-resizable': {'@module': 'ietf-layer1-types', '@namespace': 'urn:ietf:params:xml:ns:yang:ietf-layer1-types'}},), is_leaf=True, yang_name="odu-type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='identityref', is_config=True) + + + def _get_number(self): + """ + Getter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + + YANG Description: Number of ODUs + """ + return self.__number + + def _set_number(self, v, load=False): + """ + Setter method for number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_number() directly. + + YANG Description: Number of ODUs + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__number = t + if hasattr(self, '_set'): + self._set() + + def _unset_number(self): + self.__number = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + + def _get_ts_number(self): + """ + Getter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + return self.__ts_number + + def _set_ts_number(self, v, load=False): + """ + Setter method for ts_number, mapped from YANG variable /networks/te/templates/link_template/te_link_attributes/unreserved_bandwidth/te_bandwidth/otn/odulist/ts_number (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_ts_number is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ts_number() directly. + + YANG Description: The number of Tributary Slots (TS) that +could be used by all the ODUflex LSPs. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ts_number must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True)""", + }) + + self.__ts_number = t + if hasattr(self, '_set'): + self._set() + + def _unset_ts_number(self): + self.__ts_number = YANGDynClass(base=RestrictedClassType(base_type=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), restriction_dict={'range': ['1..4095']}), is_leaf=True, yang_name="ts-number", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-otn-topology', defining_module='ietf-otn-topology', yang_type='uint16', is_config=True) + + odu_type = __builtin__.property(_get_odu_type, _set_odu_type) + number = __builtin__.property(_get_number, _set_number) + ts_number = __builtin__.property(_get_ts_number, _set_ts_number) + + + _pyangbind_elements = OrderedDict([('odu_type', odu_type), ('number', number), ('ts_number', ts_number), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/__init__.py new file mode 100644 index 000000000..f7a053a34 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/__init__.py @@ -0,0 +1,251 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import te_node_attributes +class node_template(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/node-template. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of TE node templates used to define sharable +and reusable TE node attributes. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__priority','__reference_change_policy','__te_node_attributes',) + + _yang_name = 'node-template' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + self.__reference_change_policy = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + self.__te_node_attributes = YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'node-template'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/te/templates/node_template/name (te-types:te-template-name) + + YANG Description: The name to identify a TE node template. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/te/templates/node_template/name (te-types:te-template-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: The name to identify a TE node template. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with te-types:te-template-name""", + 'defined-type': "te-types:te-template-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '/?([a-zA-Z0-9\\-_.]+)(/[a-zA-Z0-9\\-_.]+)*'}), is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-template-name', is_config=True) + + + def _get_priority(self): + """ + Getter method for priority, mapped from YANG variable /networks/te/templates/node_template/priority (uint16) + + YANG Description: The preference value for resolving conflicts between +different templates. When two or more templates specify +values for one configuration attribute, the value from the +template with the highest priority is used. +A lower number indicates a higher priority. The highest +priority is 0. + """ + return self.__priority + + def _set_priority(self, v, load=False): + """ + Setter method for priority, mapped from YANG variable /networks/te/templates/node_template/priority (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_priority is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_priority() directly. + + YANG Description: The preference value for resolving conflicts between +different templates. When two or more templates specify +values for one configuration attribute, the value from the +template with the highest priority is used. +A lower number indicates a higher priority. The highest +priority is 0. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """priority must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True)""", + }) + + self.__priority = t + if hasattr(self, '_set'): + self._set() + + def _unset_priority(self): + self.__priority = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="priority", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint16', is_config=True) + + + def _get_reference_change_policy(self): + """ + Getter method for reference_change_policy, mapped from YANG variable /networks/te/templates/node_template/reference_change_policy (enumeration) + + YANG Description: This attribute specifies the action taken for a +configuration node that has a reference to this template. + """ + return self.__reference_change_policy + + def _set_reference_change_policy(self, v, load=False): + """ + Setter method for reference_change_policy, mapped from YANG variable /networks/te/templates/node_template/reference_change_policy (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_reference_change_policy is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_reference_change_policy() directly. + + YANG Description: This attribute specifies the action taken for a +configuration node that has a reference to this template. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """reference_change_policy must be of a type compatible with enumeration""", + 'defined-type': "ietf-te-topology:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True)""", + }) + + self.__reference_change_policy = t + if hasattr(self, '_set'): + self._set() + + def _unset_reference_change_policy(self): + self.__reference_change_policy = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'no-action': {}, 'not-allowed': {}, 'cascade': {}},), is_leaf=True, yang_name="reference-change-policy", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='enumeration', is_config=True) + + + def _get_te_node_attributes(self): + """ + Getter method for te_node_attributes, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes (container) + + YANG Description: Contains node attributes in a TE topology. + """ + return self.__te_node_attributes + + def _set_te_node_attributes(self, v, load=False): + """ + Setter method for te_node_attributes, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_te_node_attributes is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_te_node_attributes() directly. + + YANG Description: Contains node attributes in a TE topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """te_node_attributes must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__te_node_attributes = t + if hasattr(self, '_set'): + self._set() + + def _unset_te_node_attributes(self): + self.__te_node_attributes = YANGDynClass(base=te_node_attributes.te_node_attributes, is_container='container', yang_name="te-node-attributes", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + priority = __builtin__.property(_get_priority, _set_priority) + reference_change_policy = __builtin__.property(_get_reference_change_policy, _set_reference_change_policy) + te_node_attributes = __builtin__.property(_get_te_node_attributes, _set_te_node_attributes) + + + _pyangbind_elements = OrderedDict([('name', name), ('priority', priority), ('reference_change_policy', reference_change_policy), ('te_node_attributes', te_node_attributes), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/__init__.py new file mode 100644 index 000000000..32a98a2da --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/__init__.py @@ -0,0 +1,317 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import underlay_topology +class te_node_attributes(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/node-template/te-node-attributes. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Contains node attributes in a TE topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__admin_status','__domain_id','__is_abstract','__name','__signaling_address','__underlay_topology',) + + _yang_name = 'te-node-attributes' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'node-template', 'te-node-attributes'] + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/admin_status (te-types:te-admin-status) + + YANG Description: The administrative state of the link. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/admin_status (te-types:te-admin-status) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The administrative state of the link. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with te-types:te-admin-status""", + 'defined-type': "te-types:te-admin-status", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'up': {}, 'down': {}, 'testing': {}, 'preparing-maintenance': {}, 'maintenance': {}, 'unknown': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='te-types:te-admin-status', is_config=True) + + + def _get_domain_id(self): + """ + Getter method for domain_id, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/domain_id (uint32) + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + return self.__domain_id + + def _set_domain_id(self, v, load=False): + """ + Setter method for domain_id, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/domain_id (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_domain_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_domain_id() directly. + + YANG Description: Identifies the domain to which this node belongs. +This attribute is used to support inter-domain links. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """domain_id must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True)""", + }) + + self.__domain_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_domain_id(self): + self.__domain_id = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="domain-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='uint32', is_config=True) + + + def _get_is_abstract(self): + """ + Getter method for is_abstract, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/is_abstract (empty) + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + return self.__is_abstract + + def _set_is_abstract(self, v, load=False): + """ + Setter method for is_abstract, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/is_abstract (empty) + If this variable is read-only (config: false) in the + source YANG file, then _set_is_abstract is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_is_abstract() directly. + + YANG Description: Present if the node is abstract; not present if the node +is actual. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """is_abstract must be of a type compatible with empty""", + 'defined-type': "empty", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True)""", + }) + + self.__is_abstract = t + if hasattr(self, '_set'): + self._set() + + def _unset_is_abstract(self): + self.__is_abstract = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="is-abstract", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='empty', is_config=True) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/name (string) + + YANG Description: Node name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Node name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='string', is_config=True) + + + def _get_signaling_address(self): + """ + Getter method for signaling_address, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/signaling_address (inet:ip-address) + + YANG Description: The node's signaling address. + """ + return self.__signaling_address + + def _set_signaling_address(self, v, load=False): + """ + Setter method for signaling_address, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/signaling_address (inet:ip-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_signaling_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_signaling_address() directly. + + YANG Description: The node's signaling address. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """signaling_address must be of a type compatible with inet:ip-address""", + 'defined-type': "inet:ip-address", + 'generated-type': """YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True)""", + }) + + self.__signaling_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_signaling_address(self): + self.__signaling_address = YANGDynClass(unique=True, base=TypedListType(allowed_type=[RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?'}),RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?'}),]), is_leaf=False, yang_name="signaling-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='inet:ip-address', is_config=True) + + + def _get_underlay_topology(self): + """ + Getter method for underlay_topology, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/underlay_topology (container) + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + return self.__underlay_topology + + def _set_underlay_topology(self, v, load=False): + """ + Setter method for underlay_topology, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/underlay_topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_underlay_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_underlay_topology() directly. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """underlay_topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True)""", + }) + + self.__underlay_topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_underlay_topology(self): + self.__underlay_topology = YANGDynClass(base=underlay_topology.underlay_topology, is_container='container', yang_name="underlay-topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='container', is_config=True) + + admin_status = __builtin__.property(_get_admin_status, _set_admin_status) + domain_id = __builtin__.property(_get_domain_id, _set_domain_id) + is_abstract = __builtin__.property(_get_is_abstract, _set_is_abstract) + name = __builtin__.property(_get_name, _set_name) + signaling_address = __builtin__.property(_get_signaling_address, _set_signaling_address) + underlay_topology = __builtin__.property(_get_underlay_topology, _set_underlay_topology) + + + _pyangbind_elements = OrderedDict([('admin_status', admin_status), ('domain_id', domain_id), ('is_abstract', is_abstract), ('name', name), ('signaling_address', signaling_address), ('underlay_topology', underlay_topology), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/underlay_topology/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/underlay_topology/__init__.py new file mode 100644 index 000000000..9480263d4 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/bindings/networks/te/templates/node_template/te_node_attributes/underlay_topology/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.yangtypes import YANGBinary +from pyangbind.lib.yangtypes import YANGBitsType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class underlay_topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module ietf-network - based on the path /networks/te/templates/node-template/te-node-attributes/underlay-topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: When an abstract node encapsulates a topology, the +attributes in this container point to said topology. + """ + __slots__ = ('_path_helper', '_extmethods', '__network_ref',) + + _yang_name = 'underlay-topology' + _yang_namespace = 'urn:ietf:params:xml:ns:yang:ietf-network' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['networks', 'te', 'templates', 'node-template', 'te-node-attributes', 'underlay-topology'] + + def _get_network_ref(self): + """ + Getter method for network_ref, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/underlay_topology/network_ref (leafref) + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + return self.__network_ref + + def _set_network_ref(self, v, load=False): + """ + Setter method for network_ref, mapped from YANG variable /networks/te/templates/node_template/te_node_attributes/underlay_topology/network_ref (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_network_ref is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_network_ref() directly. + + YANG Description: Used to reference a network -- for example, an underlay +network. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """network_ref must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True)""", + }) + + self.__network_ref = t + if hasattr(self, '_set'): + self._set() + + def _unset_network_ref(self): + self.__network_ref = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="network-ref", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:ietf:params:xml:ns:yang:ietf-te-topology', defining_module='ietf-te-topology', yang_type='leafref', is_config=True) + + network_ref = __builtin__.property(_get_network_ref, _set_network_ref) + + + _pyangbind_elements = OrderedDict([('network_ref', network_ref), ]) + + diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/build-yang-bindings.sh b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/build-yang-bindings.sh new file mode 100755 index 000000000..efb3d6ba2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/build-yang-bindings.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +BASE_PATH=~/tfs-ctrl/src/nbi/service/rest_server/nbi_plugins/ietf_network +IETF_MODELS_PATH=${BASE_PATH}/yang + +cd ${BASE_PATH} +export PYBINDPLUGIN=`/usr/bin/env python -c 'import pyangbind; import os; print ("{}/plugin".format(os.path.dirname(pyangbind.__file__)))'` + +rm -rf bindings + +# -p ${OC_HERCULES_MODELS_PATH}/ +# --split-class-dir openconfig_hercules +# --presence +pyang --plugindir $PYBINDPLUGIN -p ${IETF_MODELS_PATH}/ -f pybind --split-class-dir bindings \ + ${IETF_MODELS_PATH}/ietf-network-topology@2018-02-26.yang \ + ${IETF_MODELS_PATH}/ietf-network@2018-02-26.yang \ + ${IETF_MODELS_PATH}/ietf-te-topology@2020-08-06.yang \ + ${IETF_MODELS_PATH}/ietf-otn-topology@2023-07-06.yang \ + ${IETF_MODELS_PATH}/ietf-eth-te-topology@2023-09-28.yang \ + ${IETF_MODELS_PATH}/ietf-vpn-common@2022-02-11.yang \ + ${IETF_MODELS_PATH}/ietf-sap-ntw@2023-06-20.yang + + + +# ${IETF_MODELS_PATH}/iana-routing-types@2017-12-04.yang \ +# ${IETF_MODELS_PATH}/ietf-inet-types@2013-07-15.yang \ +# ${IETF_MODELS_PATH}/ietf-layer1-types@2022-10-14.yang \ +# ${IETF_MODELS_PATH}/ietf-routing-types@2017-12-04.yang \ +# ${IETF_MODELS_PATH}/ietf-te-packet-types@2020-06-10.yang \ +# ${IETF_MODELS_PATH}/ietf-te-types@2020-06-10.yang \ +# ${IETF_MODELS_PATH}/ietf-yang-types@2013-07-15.yang \ diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/iana-routing-types@2017-12-04.yang new file mode 100644 index 000000000..250cba4b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/iana-routing-types@2017-12-04.yang @@ -0,0 +1,473 @@ + module iana-routing-types { + namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; + prefix iana-rt-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + + description + "This module contains a collection of YANG data types + considered defined by IANA and used for routing + protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 4."; + } + + /*** Collection of IANA types related to routing ***/ + /*** IANA Address Family enumeration ***/ + + typedef address-family { + type enumeration { + enum ipv4 { + value 1; + description + "IPv4 Address Family."; + } + + enum ipv6 { + value 2; + description + "IPv6 Address Family."; + } + + enum nsap { + value 3; + description + "OSI Network Service Access Point (NSAP) Address Family."; + } + + enum hdlc { + value 4; + description + "High-Level Data Link Control (HDLC) Address Family."; + } + + enum bbn1822 { + value 5; + description + "Bolt, Beranek, and Newman Report 1822 (BBN 1822) + Address Family."; + } + + enum ieee802 { + value 6; + description + "IEEE 802 Committee Address Family + (aka Media Access Control (MAC) address)."; + } + + enum e163 { + value 7; + description + "ITU-T E.163 Address Family."; + } + + enum e164 { + value 8; + description + "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), + Frame Relay, ATM) Address Family."; + } + + enum f69 { + value 9; + description + "ITU-T F.69 (Telex) Address Family."; + } + + enum x121 { + value 10; + description + "ITU-T X.121 (X.25, Frame Relay) Address Family."; + } + + enum ipx { + value 11; + description + "Novell Internetwork Packet Exchange (IPX) + Address Family."; + } + + enum appletalk { + value 12; + description + "Apple AppleTalk Address Family."; + } + + enum decnet-iv { + value 13; + description + "Digital Equipment DECnet Phase IV Address Family."; + } + + enum vines { + value 14; + description + "Banyan Vines Address Family."; + } + + enum e164-nsap { + value 15; + description + "ITU-T E.164 with NSAP sub-address Address Family."; + } + + enum dns { + value 16; + description + "Domain Name System (DNS) Address Family."; + } + + enum distinguished-name { + value 17; + description + "Distinguished Name Address Family."; + } + + enum as-num { + value 18; + description + "Autonomous System (AS) Number Address Family."; + } + + enum xtp-v4 { + value 19; + description + "Xpress Transport Protocol (XTP) over IPv4 + Address Family."; + } + + enum xtp-v6 { + value 20; + description + "XTP over IPv6 Address Family."; + } + + enum xtp-native { + value 21; + description + "XTP native mode Address Family."; + } + + enum fc-port { + value 22; + description + "Fibre Channel (FC) World-Wide Port Name Address Family."; + } + + enum fc-node { + value 23; + description + "FC World-Wide Node Name Address Family."; + } + + enum gwid { + value 24; + description + "ATM Gateway Identifier (GWID) Number Address Family."; + } + + enum l2vpn { + value 25; + description + "Layer 2 VPN (L2VPN) Address Family."; + } + + enum mpls-tp-section-eid { + value 26; + description + "MPLS Transport Profile (MPLS-TP) Section Endpoint + Identifier Address Family."; + } + + enum mpls-tp-lsp-eid { + value 27; + description + "MPLS-TP Label Switched Path (LSP) Endpoint Identifier + Address Family."; + } + + enum mpls-tp-pwe-eid { + value 28; + description + "MPLS-TP Pseudowire Endpoint Identifier Address Family."; + } + + enum mt-v4 { + value 29; + description + "Multi-Topology IPv4 Address Family."; + } + + enum mt-v6 { + value 30; + description + "Multi-Topology IPv6 Address Family."; + } + + enum eigrp-common-sf { + value 16384; + description + "Enhanced Interior Gateway Routing Protocol (EIGRP) + Common Service Family Address Family."; + } + + enum eigrp-v4-sf { + value 16385; + description + "EIGRP IPv4 Service Family Address Family."; + } + + enum eigrp-v6-sf { + value 16386; + description + "EIGRP IPv6 Service Family Address Family."; + } + + enum lcaf { + value 16387; + description + "Locator/ID Separation Protocol (LISP) + Canonical Address Format (LCAF) Address Family."; + } + + enum bgp-ls { + value 16388; + description + "Border Gateway Protocol - Link State (BGP-LS) + Address Family."; + } + + enum mac-48 { + value 16389; + description + "IEEE 48-bit MAC Address Family."; + } + + enum mac-64 { + value 16390; + description + "IEEE 64-bit MAC Address Family."; + } + + enum trill-oui { + value 16391; + description + "Transparent Interconnection of Lots of Links (TRILL) + IEEE Organizationally Unique Identifier (OUI) + Address Family."; + } + + enum trill-mac-24 { + value 16392; + description + "TRILL final 3 octets of 48-bit MAC Address Family."; + } + + enum trill-mac-40 { + value 16393; + description + "TRILL final 5 octets of 64-bit MAC Address Family."; + } + + enum ipv6-64 { + value 16394; + description + "First 8 octets (64 bits) of IPv6 address + Address Family."; + } + + enum trill-rbridge-port-id { + value 16395; + description + "TRILL Routing Bridge (RBridge) Port ID Address Family."; + } + + enum trill-nickname { + value 16396; + description + "TRILL Nickname Address Family."; + } + } + + description + "Enumeration containing all the IANA-defined + Address Families."; + + } + + /*** Subsequent Address Family Identifiers (SAFIs) ***/ + /*** for multiprotocol BGP enumeration ***/ + + typedef bgp-safi { + type enumeration { + enum unicast-safi { + value 1; + description + "Unicast SAFI."; + } + + enum multicast-safi { + value 2; + description + "Multicast SAFI."; + } + + enum labeled-unicast-safi { + value 4; + description + "Labeled Unicast SAFI."; + } + + enum multicast-vpn-safi { + value 5; + description + "Multicast VPN SAFI."; + } + + enum pseudowire-safi { + value 6; + description + "Multi-segment Pseudowire VPN SAFI."; + } + + enum tunnel-encap-safi { + value 7; + description + "Tunnel Encap SAFI."; + } + + enum mcast-vpls-safi { + value 8; + description + "Multicast Virtual Private LAN Service (VPLS) SAFI."; + } + + enum tunnel-safi { + value 64; + description + "Tunnel SAFI."; + } + + enum vpls-safi { + value 65; + description + "VPLS SAFI."; + } + + enum mdt-safi { + value 66; + description + "Multicast Distribution Tree (MDT) SAFI."; + } + + enum v4-over-v6-safi { + value 67; + description + "IPv4 over IPv6 SAFI."; + } + + enum v6-over-v4-safi { + value 68; + description + "IPv6 over IPv4 SAFI."; + } + + enum l1-vpn-auto-discovery-safi { + value 69; + description + "Layer 1 VPN Auto-Discovery SAFI."; + } + + enum evpn-safi { + value 70; + description + "Ethernet VPN (EVPN) SAFI."; + } + + enum bgp-ls-safi { + value 71; + description + "BGP-LS SAFI."; + } + + enum bgp-ls-vpn-safi { + value 72; + description + "BGP-LS VPN SAFI."; + } + + enum sr-te-safi { + value 73; + description + "Segment Routing - Traffic Engineering (SR-TE) SAFI."; + } + + enum labeled-vpn-safi { + value 128; + description + "MPLS Labeled VPN SAFI."; + } + + enum multicast-mpls-vpn-safi { + value 129; + description + "Multicast for BGP/MPLS IP VPN SAFI."; + } + + enum route-target-safi { + value 132; + description + "Route Target SAFI."; + } + + enum ipv4-flow-spec-safi { + value 133; + description + "IPv4 Flow Specification SAFI."; + } + + enum vpnv4-flow-spec-safi { + value 134; + description + "IPv4 VPN Flow Specification SAFI."; + } + + enum vpn-auto-discovery-safi { + value 140; + description + "VPN Auto-Discovery SAFI."; + } + } + description + "Enumeration for BGP SAFI."; + reference + "RFC 4760: Multiprotocol Extensions for BGP-4."; + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ac-ntw@2024-05-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ac-ntw@2024-05-15.yang new file mode 100644 index 000000000..f48e4d767 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ac-ntw@2024-05-15.yang @@ -0,0 +1,2019 @@ +module ietf-ac-ntw { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-ac-ntw"; + prefix ac-ntw; + + import ietf-vpn-common { + prefix vpn-common; + reference + "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 + VPNs"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types, Section 4"; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-routing-policy { + prefix rt-pol; + reference + "RFC 9067: A YANG Data Model for Routing Policy"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + import ieee802-dot1q-types { + prefix dot1q-types; + reference + "IEEE Std 802.1Qcp: Bridges and Bridged Networks-- + Amendment 30: YANG Data Model"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies, + Section 6.1"; + } + import ietf-sap-ntw { + prefix sap; + reference + "RFC 9408: A YANG Network Model for Service Attachment + Points (SAPs)"; + } + import ietf-ac-common { + prefix ac-common; + reference + "RFC CCCC: A Common YANG Data Model for Attachment Circuits"; + } + import ietf-ac-svc { + prefix ac-svc; + reference + "RFC SSSS: YANG Data Models for Bearers and 'Attachment + Circuits'-as-a-Service (ACaaS)"; + } + + organization + "IETF OPSAWG (Operations and Management Area Working Group)"; + contact + "WG Web: + WG List: + + Editor: Mohamed Boucadair + + Author: Richard Roberts + + Author: Oscar Gonzalez de Dios + + Author: Samier Barguil + + Author: Bo Wu + "; + description + "This YANG module defines a YANG network model for the management + of attachment circuits. + + Copyright (c) 2024 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see the + RFC itself for full legal notices."; + + revision 2024-05-15 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Network Data Model for Attachment Circuits"; + } + + // References + + /* A set of groupings to ease referencing cross-modules */ + + grouping attachment-circuit-reference { + description + "This grouping can be used to reference an attachment circuit + in a specific node."; + leaf ac-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]/nw:node[nw:node-id=current()/../" + + "node-ref]/ac-ntw:ac/ac-ntw:name"; + require-instance false; + } + description + "An absolute reference to an attachment circuit."; + } + uses nw:node-ref; + } + + grouping attachment-circuit-references { + description + "This grouping can be used to reference a list of attachment + circuits in a specific node."; + leaf-list ac-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]/nw:node[nw:node-id=current()/../" + + "node-ref]/ac-ntw:ac/ac-ntw:name"; + require-instance false; + } + description + "An absolute reference to an attachment circuit."; + } + uses nw:node-ref; + } + + grouping ac-profile-reference { + description + "This grouping can be used to reference an attachment circuit + profile."; + leaf ac-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]/ac-ntw:ac-profile/ac-ntw:name"; + require-instance false; + } + description + "An absolute reference to an attachment circuit."; + } + uses nw:network-ref; + } + + grouping encryption-profile-reference { + description + "This grouping can be used to reference encryption + profile."; + leaf encryption-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]" + + "/ac-ntw:specific-provisioning-profiles" + + "/ac-ntw:valid-provider-identifiers" + + "/ac-ntw:encryption-profile-identifier/ac-ntw:id"; + require-instance false; + } + description + "An absolute reference to an encryption profile."; + } + uses nw:network-ref; + } + + grouping qos-profile-reference { + description + "This grouping can be used to reference a QoS profile."; + leaf qos-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]" + + "/ac-ntw:specific-provisioning-profiles" + + "/ac-ntw:valid-provider-identifiers" + + "/ac-ntw:qos-profile-identifier/ac-ntw:id"; + require-instance false; + } + description + "An absolute reference to a QoS profile."; + } + uses nw:network-ref; + } + + grouping failure-detection-profile-reference { + description + "This grouping can be used to reference a failure detection + profile."; + leaf failure-detection-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]" + + "/ac-ntw:specific-provisioning-profiles" + + "/ac-ntw:valid-provider-identifiers" + + "/ac-ntw:failure-detection-profile-identifier/ac-ntw:id"; + require-instance false; + } + description + "An absolute reference to a failure detection profile."; + } + uses nw:network-ref; + } + + grouping forwarding-profile-reference { + description + "This grouping can be used to reference a forwarding profile."; + leaf forwarding-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]" + + "/ac-ntw:specific-provisioning-profiles" + + "/ac-ntw:valid-provider-identifiers" + + "/ac-ntw:forwarding-profile-identifier/ac-ntw:id"; + require-instance false; + } + description + "An absolute reference to a forwarding profile."; + } + uses nw:network-ref; + } + + grouping routing-profile-reference { + description + "This grouping can be used to reference a routing profile."; + leaf routing-profile-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../" + + "network-ref]" + + "/ac-ntw:specific-provisioning-profiles" + + "/ac-ntw:valid-provider-identifiers" + + "/ac-ntw:routing-profile-identifier/ac-ntw:id"; + require-instance false; + } + description + "An absolute reference to a routing profile."; + } + uses nw:network-ref; + } + + // L2 conenction + + grouping l2-connection { + description + "Defines Layer 2 protocols and parameters that are required to + enable AC connectivity on the network side."; + container encapsulation { + description + "Container for Layer 2 encapsulation."; + leaf encap-type { + type identityref { + base vpn-common:encapsulation-type; + } + description + "Tagged interface type."; + } + container dot1q { + when "derived-from-or-self(../encap-type, " + + "'vpn-common:dot1q')" { + description + "Only applies when the type of the tagged interface is + 'dot1q'."; + } + description + "Tagged interface."; + uses ac-common:dot1q; + container tag-operations { + description + "Sets the tag manipulation policy for this AC. It defines + a set of tag manipulations that allow for the insertion, + removal, or rewriting of 802.1Q VLAN tags. These + operations are indicated for the CE-PE direction. + By default, tag operations are symmetric. As such, the + reverse tag operation is assumed on the PE-CE + direction."; + choice op-choice { + description + "Selects the tag rewriting policy for an AC."; + leaf pop { + type empty; + description + "Pop the outer tag."; + } + leaf push { + type empty; + description + "Pushes one or two tags defined by the tag-1 and + tag-2 leaves. It is assumed that, absent any + policy, the default value of 0 will be used for + the PCP setting."; + } + leaf translate { + type empty; + description + "Translates the outer tag to one or two tags. PCP + bits are preserved."; + } + } + leaf tag-1 { + when 'not(../pop)'; + type dot1q-types:vlanid; + description + "A first tag to be used for push or translate + operations. This tag will be used as the outermost tag + as a result of the tag operation."; + } + leaf tag-1-type { + type dot1q-types:dot1q-tag-type; + default "dot1q-types:s-vlan"; + description + "Specifies a specific 802.1Q tag type of tag-1."; + } + leaf tag-2 { + when '(../translate)'; + type dot1q-types:vlanid; + description + "A second tag to be used for translation."; + } + leaf tag-2-type { + type dot1q-types:dot1q-tag-type; + default "dot1q-types:c-vlan"; + description + "Specifies a specific 802.1Q tag type of tag-2."; + } + } + } + container priority-tagged { + when "derived-from-or-self(../encap-type, " + + "'vpn-common:priority-tagged')" { + description + "Only applies when the type of the tagged interface is + 'priority-tagged'."; + } + description + "Priority tagged container."; + uses ac-common:priority-tagged; + } + container qinq { + when "derived-from-or-self(../encap-type, " + + "'vpn-common:qinq')" { + description + "Only applies when the type of the tagged interface is + 'QinQ'."; + } + description + "Includes QinQ parameters."; + uses ac-common:qinq; + container tag-operations { + description + "Sets the tag manipulation policy for this AC. It defines + a set of tag manipulations that allow for the insertion, + removal, or rewriting of 802.1Q VLAN tags. These + operations are indicated for the CE-PE direction. + By default, tag operations are symmetric. As such, the + reverse tag operation is assumed on the PE-CE + direction."; + choice op-choice { + description + "Selects the tag rewriting policy for a AC."; + leaf pop { + type uint8 { + range "1|2"; + } + description + "Pops one or two tags as a function of the indicated + pop value."; + } + leaf push { + type empty; + description + "Pushes one or two tags defined by the tag-1 and + tag-2 leaves. It is assumed that, absent any + policy, the default value of 0 will be used for + PCP setting."; + } + leaf translate { + type uint8 { + range "1|2"; + } + description + "Translates one or two outer tags. PCP bits are + preserved. The following operations are supported: + + - translate 1 with tag-1 leaf is provided: only the + outermost tag is translated to the value in tag-1. + + - translate 2 with both tag-1 and tag-2 leaves are + provided: both outer and inner tags are translated + to the values in tag-1 and tag-2, respectively. + + - translate 2 with tag-1 leaf is provided: the + outer tag is popped while the inner tag is + translated to the value in tag-1."; + } + } + leaf tag-1 { + when 'not(../pop)'; + type dot1q-types:vlanid; + description + "A first tag to be used for push or translate + operations. This tag will be used as the outermost tag + as a result of the tag operation."; + } + leaf tag-1-type { + type dot1q-types:dot1q-tag-type; + default "dot1q-types:s-vlan"; + description + "Specifies a specific 802.1Q tag type of tag-1."; + } + leaf tag-2 { + when 'not(../pop)'; + type dot1q-types:vlanid; + description + "A second tag to be used for push or translate + operations."; + } + leaf tag-2-type { + type dot1q-types:dot1q-tag-type; + default "dot1q-types:c-vlan"; + description + "Specifies a specific 802.1Q tag type of tag-2."; + } + } + } + } + choice l2-service { + description + "The Layer 2 connectivity service can be provided by + indicating a pointer to an L2VPN or by specifying a Layer 2 + tunnel service."; + container l2-tunnel-service { + description + "Defines a Layer 2 tunnel termination."; + uses ac-common:l2-tunnel-service; + } + case l2vpn { + leaf l2vpn-id { + type vpn-common:vpn-id; + description + "Indicates the L2VPN service associated with an + Integrated Routing and Bridging (IRB) interface."; + } + } + } + } + + grouping l2-connection-if-ref { + description + "Specifies Layer 2 connection paramters with interface + references."; + uses l2-connection; + leaf l2-termination-point { + type string; + description + "Specifies a reference to a local Layer 2 termination point, + such as a Layer 2 sub-interface."; + } + leaf local-bridge-reference { + type string; + description + "Specifies a local bridge reference to accommodate, e.g., + implementations that require internal bridging. + A reference may be a local bridge domain."; + } + leaf bearer-reference { + if-feature "ac-common:server-assigned-reference"; + type string; + description + "This is an internal reference for the service provider to + identify the bearer associated with this AC."; + } + container lag-interface { + if-feature "vpn-common:lag-interface"; + description + "Container for configuration of Link Aggregation Group (LAG) + interface attributes."; + leaf lag-interface-id { + type string; + description + "LAG interface identifier."; + } + container member-link-list { + description + "Container for the member link list."; + list member-link { + key "name"; + description + "Member link."; + leaf name { + type string; + description + "Member link name."; + } + } + } + } + } + + // IPv4 connection groupings + + grouping ipv4-connection { + description + "IPv4-specific parameters."; + leaf local-address { + type inet:ipv4-address; + description + "The IP address used at the provider's interface."; + } + uses ac-common:ipv4-allocation-type; + choice allocation-type { + description + "Choice of the IPv4 address allocation."; + case dynamic { + description + "When the addresses are allocated by DHCP or other + dynamic means local to the infrastructure."; + choice address-assign { + description + "A choice for how IPv4 addresses are assigned."; + case number { + leaf number-of-dynamic-address { + type uint16; + description + "Specifies the number of IP addresses to be + assigned to the customer on this access."; + } + } + case explicit { + container customer-addresses { + description + "Container for customer addresses to be allocated + using DHCP."; + list address-pool { + key "pool-id"; + description + "Describes IP addresses to be dyncamically + allocated. + + When only 'start-address' is present, it + represents a single address. + + When both 'start-address' and 'end-address' are + specified, it implies a range inclusive of both + addresses."; + leaf pool-id { + type string; + description + "A pool identifier for the address range from + 'start-address' to 'end-address'."; + } + leaf start-address { + type inet:ipv4-address; + mandatory true; + description + "Indicates the first address in the pool."; + } + leaf end-address { + type inet:ipv4-address; + description + "Indicates the last address in the pool."; + } + } + } + } + } + choice provider-dhcp { + description + "Parameters related to DHCP-allocated addresses. + IP addresses are allocated by DHCP, which is provided + by the operator."; + leaf dhcp-service-type { + type enumeration { + enum server { + description + "Local DHCP server."; + } + enum relay { + description + "Local DHCP relay. DHCP requests are relayed to a + provider's server."; + } + } + description + "Indicates the type of DHCP service to be enabled on + this access."; + } + choice service-type { + description + "Choice based on the DHCP service type."; + case relay { + description + "Container for a list of the provider's DHCP servers + (i.e., 'dhcp-service-type' is set to 'relay')."; + leaf-list server-ip-address { + type inet:ipv4-address; + description + "IPv4 addresses of the provider's DHCP server, for + use by the local DHCP relay."; + } + } + } + } + choice dhcp-relay { + description + "The DHCP relay is provided by the operator."; + container customer-dhcp-servers { + description + "Container for a list of the customer's DHCP servers."; + leaf-list server-ip-address { + type inet:ipv4-address; + description + "IPv4 addresses of the customer's DHCP server."; + } + } + } + } + case static-addresses { + description + "Lists the IPv4 addresses that are used."; + list address { + key "address-id"; + ordered-by user; + description + "Lists the IPv4 addresses that are used. The first + address of the list is the primary address of the + connection."; + leaf address-id { + type string; + description + "An identifier of the static IPv4 address."; + } + leaf customer-address { + type inet:ipv4-address; + description + "An IPv4 address of the customer side."; + } + uses failure-detection-profile-reference; + } + } + } + } + + grouping ipv6-connection { + description + "IPv6-specific parameters."; + leaf local-address { + type inet:ipv6-address; + description + "IPv6 address of the provider side."; + } + uses ac-common:ipv6-allocation-type; + choice allocation-type { + description + "Choice of the IPv6 address allocation."; + case dynamic { + description + "When the addresses are allocated by DHCP or other + dynamic means local to the infrastructure."; + choice address-assign { + description + "A choice for how IPv6 addresses are assigned."; + case number { + leaf number-of-dynamic-address { + type uint16; + description + "Specifies the number of IP addresses to be + assigned to the customer on this access."; + } + } + case explicit { + container customer-addresses { + description + "Container for customer addresses to be allocated + using DHCP."; + list address-pool { + key "pool-id"; + description + "Describes IP addresses to be dyncamically + allocated. + + When only 'start-address' is present, it + represents a single address. + + When both 'start-address' and 'end-address' are + specified, it implies a range inclusive of both + addresses."; + leaf pool-id { + type string; + description + "A pool identifier for the address range from + 'start-address' to 'end-address'."; + } + leaf start-address { + type inet:ipv6-address; + mandatory true; + description + "Indicates the first address in the pool."; + } + leaf end-address { + type inet:ipv6-address; + description + "Indicates the last address in the pool."; + } + } + } + } + } + choice provider-dhcp { + description + "Parameters related to DHCP-allocated addresses. + IP addresses are allocated by DHCP, which is provided + by the operator."; + leaf dhcp-service-type { + type enumeration { + enum server { + description + "Local DHCP server."; + } + enum relay { + description + "Local DHCP relay. DHCP requests are relayed to + a provider's server."; + } + } + description + "Indicates the type of DHCP service to + be enabled on this access."; + } + choice service-type { + description + "Choice based on the DHCP service type."; + case relay { + description + "Container for a list of the provider's DHCP servers + (i.e., 'dhcp-service-type' is set to 'relay')."; + leaf-list server-ip-address { + type inet:ipv6-address; + description + "IPv6 addresses of the provider's DHCP server, for + use by the local DHCP relay."; + } + } + } + } + choice dhcp-relay { + description + "The DHCP relay is provided by the operator."; + container customer-dhcp-servers { + description + "Container for a list of the customer's DHCP servers."; + leaf-list server-ip-address { + type inet:ipv6-address; + description + "IPv6 addresses of the customer's DHCP server."; + } + } + } + } + case static-addresses { + description + "Lists the IPv4 addresses that are used."; + list address { + key "address-id"; + ordered-by user; + description + "Lists the IPv6 addresses that are used. The first + address of the list is the primary address of + the connection."; + leaf address-id { + type string; + description + "An identifier of the static IPv4 address."; + } + leaf customer-address { + type inet:ipv6-address; + description + "An IPv6 address of the customer side."; + } + uses failure-detection-profile-reference; + } + } + } + } + + grouping ip-connection { + description + "Defines IP connection parameters."; + leaf l3-termination-point { + type string; + description + "Specifies a reference to a local Layer 3 termination point, + such as a bridge domain interface."; + } + container ipv4 { + if-feature "vpn-common:ipv4"; + description + "IPv4-specific parameters."; + uses ipv4-connection; + } + container ipv6 { + if-feature "vpn-common:ipv6"; + description + "IPv6-specific parameters."; + uses ipv6-connection; + } + } + + /* Routing */ + //BGP base parameters + + grouping bgp-base { + description + "Configuration specific to BGP."; + leaf description { + type string; + description + "Includes a description of the BGP session. This description + is meant to be used for diagnostic purposes. The semantic + of the description is local to an implementation."; + } + uses rt-pol:apply-policy-group; + leaf local-as { + type inet:as-number; + description + "Indicates a local AS Number (ASN), if an ASN distinct from + the ASN configured at the AC level is needed."; + } + leaf peer-as { + type inet:as-number; + mandatory true; + description + "Indicates the customer's ASN when the customer requests BGP + routing."; + } + leaf address-family { + type identityref { + base vpn-common:address-family; + } + description + "This node contains the address families to be activated. + 'dual-stack' means that both IPv4 and IPv6 will be + activated."; + } + leaf role { + type identityref { + base ac-common:bgp-role; + } + description + "Specifies the BGP role (provider, customer, peer, etc.)."; + } + leaf multihop { + type uint8; + description + "Describes the number of IP hops allowed between a given BGP + neighbor and the PE."; + } + leaf as-override { + type boolean; + description + "Defines whether ASN override is enabled, i.e., replacing the + ASN of the customer specified in the AS_PATH attribute with + the local ASN."; + } + leaf allow-own-as { + type uint8; + description + "If set, specifies the maximum number of occurrences of the + provider's ASN that are permitted within the AS_PATH + before it is rejected."; + } + leaf prepend-global-as { + type boolean; + description + "In some situations, the ASN that is provided at the node + level may be distinct from the ASN configured at the AC. + When such ASNs are provided, they are both prepended to the + BGP route updates for this AC. To disable that behavior, + 'prepend-global-as' must be set to 'false'. In such a + case, the ASN that is provided at the node level is not + prepended to the BGP route updates for this access."; + } + leaf send-default-route { + type boolean; + description + "Defines whether default routes can be advertised to a peer. + If set, the default routes are advertised to a peer."; + } + leaf site-of-origin { + when "derived-from-or-self(../address-family, " + + "'vpn-common:ipv4' or 'vpn-common:dual-stack')" { + description + "Only applies if IPv4 is activated."; + } + type rt-types:route-origin; + description + "The Site of Origin attribute is encoded as a Route Origin + Extended Community. It is meant to uniquely identify the + set of routes learned from a site via a particular AC and + is used to prevent routing loops."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs), + Section 7"; + } + leaf ipv6-site-of-origin { + when "derived-from-or-self(../address-family, " + + "'vpn-common:ipv6' or 'vpn-common:dual-stack')" { + description + "Only applies if IPv6 is activated."; + } + type rt-types:ipv6-route-origin; + description + "The IPv6 Site of Origin attribute is encoded as an IPv6 + Route Origin Extended Community. It is meant to uniquely + identify the set of routes learned from a site."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute"; + } + list redistribute-connected { + key "address-family"; + description + "Indicates, per address family, the policy to follow for + connected routes."; + leaf address-family { + type identityref { + base vpn-common:address-family; + } + description + "Indicates the address family."; + } + leaf enabled { + type boolean; + description + "Enables the redistribution of connected routes."; + } + } + container bgp-max-prefix { + description + "Controls the behavior when a prefix maximum is reached."; + leaf max-prefix { + type uint32; + description + "Indicates the maximum number of BGP prefixes allowed in + the BGP session. + + It allows control of how many prefixes can be received + from a neighbor. + + If the limit is exceeded, the action indicated in + 'violate-action' will be followed."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 8.2.2"; + } + leaf warning-threshold { + type decimal64 { + fraction-digits 5; + range "0..100"; + } + units "percent"; + description + "When this value is reached, a warning notification will be + triggered."; + } + leaf violate-action { + type enumeration { + enum warning { + description + "Only a warning message is sent to the peer when the + limit is exceeded."; + } + enum discard-extra-paths { + description + "Discards extra paths when the limit is exceeded."; + } + enum restart { + description + "The BGP session restarts after the indicated time + interval."; + } + } + description + "If the BGP neighbor 'max-prefix' limit is reached, the + action indicated in 'violate-action' will be followed."; + } + leaf restart-timer { + type uint32; + units "seconds"; + description + "Time interval after which the BGP session will be + reestablished."; + } + } + container bgp-timers { + description + "Includes two BGP timers."; + leaf keepalive { + type uint16 { + range "0..21845"; + } + units "seconds"; + description + "This timer indicates the KEEPALIVE messages' frequency + between a PE and a BGP peer. + + If set to '0', it indicates that KEEPALIVE messages are + disabled. + + It is suggested that the maximum time between KEEPALIVE + messages be one-third of the Hold Time interval."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 4.4"; + } + leaf hold-time { + type uint16 { + range "0 | 3..65535"; + } + units "seconds"; + description + "Indicates the maximum number of seconds that may elapse + between the receipt of successive KEEPALIVE and/or UPDATE + messages from the peer. + + The Hold Time must be either zero or at least three + seconds."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4), + Section 4.2"; + } + } + } + + grouping bgp-base-peer-group { + description + "Grouping for a basic BGP peer group."; + leaf name { + type string; + description + "Name of the BGP peer-group"; + } + uses bgp-base; + } + + grouping bgp-base-peer-group-list { + description + "Grouping for a list of basic BGP peer groups."; + list peer-group { + key "name"; + description + "List of BGP peer groups uniquely identified by a name."; + uses bgp-base-peer-group; + } + } + + grouping bgp-peer-group { + description + "Grouping for BGP peer group."; + leaf name { + type string; + description + "Name of the BGP peer-group"; + } + leaf local-address { + type union { + type inet:ip-address; + type if:interface-ref; + } + description + "Sets the local IP address to use for the BGP + transport session. This may be expressed as either + an IP address or a reference to an interface."; + } + uses bgp-base; + uses ac-common:bgp-authentication; + } + + grouping bgp-peer-group-list { + description + "Grouping for a list of BGP peer groups."; + list peer-group { + key "name"; + description + "List of BGP peer groups uniquely identified by a name."; + uses bgp-peer-group; + } + } + + // RIP base parameters + + grouping rip-base { + description + "Configuration specific to RIP routing."; + leaf address-family { + type identityref { + base vpn-common:address-family; + } + description + "Indicates whether IPv4, IPv6, or both address families are + to be activated."; + } + container timers { + description + "Indicates the RIP timers."; + reference + "RFC 2080: RIPng for IPv6 + RFC 2453: RIP Version 2"; + leaf update-interval { + type uint16 { + range "1..32767"; + } + units "seconds"; + description + "Indicates the RIP update time, i.e., the amount of time + for which RIP updates are sent."; + } + leaf invalid-interval { + type uint16 { + range "1..32767"; + } + units "seconds"; + description + "The interval before a route is declared invalid after no + updates are received. This value is at least three times + the value for the 'update-interval' argument."; + } + leaf holddown-interval { + type uint16 { + range "1..32767"; + } + units "seconds"; + description + "Specifies the interval before better routes are + released."; + } + leaf flush-interval { + type uint16 { + range "1..32767"; + } + units "seconds"; + description + "Indicates the RIP flush timer, i.e., the amount of time + that must elapse before a route is removed from the + routing table."; + } + } + leaf default-metric { + type uint8 { + range "0..16"; + } + description + "Sets the default metric."; + } + } + + // routing profile + + grouping routing-profile { + description + "Defines routing protocols."; + list routing-protocol { + key "id"; + description + "List of routing protocols used on the AC."; + leaf id { + type string; + description + "Unique identifier for the routing protocol."; + } + leaf type { + type identityref { + base vpn-common:routing-protocol-type; + } + description + "Type of routing protocol."; + } + container bgp { + when "derived-from-or-self(../type, " + + "'vpn-common:bgp-routing')" { + description + "Only applies when the protocol is BGP."; + } + if-feature "vpn-common:rtg-bgp"; + description + "Configuration specific to BGP."; + container peer-groups { + description + "Lists a set of BGP peer groups."; + uses bgp-base-peer-group-list; + } + } + container ospf { + when "derived-from-or-self(../type, " + + "'vpn-common:ospf-routing')" { + description + "Only applies when the protocol is OSPF."; + } + if-feature "vpn-common:rtg-ospf"; + description + "Configuration specific to OSPF."; + uses ac-common:ospf-basic; + leaf max-lsa { + type uint32 { + range "1..4294967294"; + } + description + "Maximum number of allowed Link State Advertisements + (LSAs) that the OSPF instance will accept."; + } + leaf passive { + type boolean; + description + "Enables when set to true a passive interface. It is + active when set to false. A passive interface's prefix + will be advertised, but no neighbor adjacencies will be + formed on the interface."; + } + } + container isis { + when "derived-from-or-self(../type, " + + "'vpn-common:isis-routing')" { + description + "Only applies when the protocol is IS-IS."; + } + if-feature "vpn-common:rtg-isis"; + description + "Configuration specific to IS-IS."; + uses ac-common:isis-basic; + leaf level { + type identityref { + base vpn-common:isis-level; + } + description + "Can be 'level-1', 'level-2', or 'level-1-2'."; + reference + "RFC 9181: A Common YANG Data Model for Layer 2 + and Layer 3 VPNs"; + } + leaf metric { + type uint32 { + range "0 .. 16777215"; + } + description + "Metric of the AC. It is used in the routing state + calculation and path selection."; + } + leaf passive { + type boolean; + description + "When set to false, the interface is active. In such + mode, the interface sends or receives IS-IS protocol + control packets. + + When set to true, the interface is passive. That is, + it suppresses the sending of IS-IS updates through the + specified interface."; + } + } + container rip { + when "derived-from-or-self(../type, " + + "'vpn-common:rip-routing')" { + description + "Only applies when the protocol is RIP."; + } + if-feature "vpn-common:rtg-rip"; + description + "Configuration specific to RIP routing."; + uses rip-base; + } + container vrrp { + when "derived-from-or-self(../type, " + + "'vpn-common:vrrp-routing')" { + description + "Only applies when the protocol is the Virtual Router + Redundancy Protocol (VRRP)."; + } + if-feature "vpn-common:rtg-vrrp"; + description + "Configuration specific to VRRP."; + reference + "RFC 9568: Virtual Router Redundancy Protocol (VRRP) + Version 3 for IPv4 and IPv6"; + leaf address-family { + type identityref { + base vpn-common:address-family; + } + description + "Indicates whether IPv4, IPv6, or both address families + are to be enabled."; + } + leaf ping-reply { + type boolean; + description + "Controls whether the VRRP speaker should reply to ping + requests."; + } + } + } + } + + grouping routing { + description + "Defines routing protocols."; + list routing-protocol { + key "id"; + description + "List of routing protocols used on the AC."; + leaf id { + type string; + description + "Unique identifier for the routing protocol."; + } + leaf type { + type identityref { + base vpn-common:routing-protocol-type; + } + description + "Type of routing protocol."; + } + list routing-profile { + key "routing-profile-ref"; + description + "Routing profiles."; + uses routing-profile-reference; + leaf type { + type identityref { + base vpn-common:ie-type; + } + description + "Import, export, or both."; + } + } + container static { + when "derived-from-or-self(../type, " + + "'vpn-common:static-routing')" { + description + "Only applies when the protocol is a static routing + protocol."; + } + description + "Configuration specific to static routing."; + container cascaded-lan-prefixes { + description + "LAN prefixes from the customer."; + list ipv4-lan-prefix { + if-feature "vpn-common:ipv4"; + key "lan next-hop"; + description + "List of LAN prefixes for the site."; + uses ac-common:ipv4-static-rtg-entry; + uses bfd-routing; + leaf preference { + type uint32; + description + "Indicates the preference associated with the static + route."; + } + uses ac-common:service-status; + } + list ipv6-lan-prefix { + if-feature "vpn-common:ipv6"; + key "lan next-hop"; + description + "List of LAN prefixes for the site."; + uses ac-common:ipv6-static-rtg-entry; + uses bfd-routing; + leaf preference { + type uint32; + description + "Indicates the preference associated with the static + route."; + } + uses ac-common:service-status; + } + } + } + container bgp { + when "derived-from-or-self(../type, " + + "'vpn-common:bgp-routing')" { + description + "Only applies when the protocol is BGP."; + } + if-feature "vpn-common:rtg-bgp"; + description + "Configuration specific to BGP."; + container peer-groups { + description + "Configuration for BGP peer-groups"; + uses bgp-peer-group-list; + } + list neighbor { + key "remote-address"; + description + "List of BGP neighbors."; + leaf remote-address { + type inet:ip-address; + description + "The remote IP address of this entry's BGP peer."; + } + leaf local-address { + type union { + type inet:ip-address; + type if:interface-ref; + } + description + "Sets the local IP address to use for + the BGP transport session. This may be + expressed as either an IP address or a + reference to an interface."; + } + leaf peer-group { + type leafref { + path "../../peer-groups/peer-group/name"; + } + description + "The peer-group with which this neighbor is + associated."; + } + uses bgp-base; + uses bfd-routing; + uses ac-common:bgp-authentication; + uses ac-common:service-status; + } + } + container ospf { + when "derived-from-or-self(../type, " + + "'vpn-common:ospf-routing')" { + description + "Only applies when the protocol is OSPF."; + } + if-feature "vpn-common:rtg-ospf"; + description + "Configuration specific to OSPF."; + uses ac-common:ospf-basic; + container sham-links { + if-feature "vpn-common:rtg-ospf-sham-link"; + description + "List of sham links."; + reference + "RFC 4577: OSPF as the Provider/Customer Edge Protocol + for BGP/MPLS IP Virtual Private Networks + (VPNs), Section 4.2.7 + RFC 6565: OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol, Section 5"; + list sham-link { + key "target-site"; + description + "Creates a sham link with another + site."; + leaf target-site { + type string; + description + "Target site for the sham link connection. The site + is referred to by its identifier."; + } + leaf metric { + type uint16; + description + "Metric of the sham link. It is used in the routing + state calculation and path selection."; + reference + "RFC 4577: OSPF as the Provider/Customer Edge + Protocol for BGP/MPLS IP Virtual Private + Networks (VPNs), Section 4.2.7.3 + RFC 6565: OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol, Section 5.2"; + } + } + } + leaf max-lsa { + type uint32 { + range "1..4294967294"; + } + description + "Maximum number of allowed Link State Advertisements + (LSAs) that the OSPF instance will accept."; + } + leaf passive { + type boolean; + description + "Enables when set to true a passive interface. It is + active when set to false. A passive interface's prefix + will be advertised, but no neighbor adjacencies will be + formed on the interface."; + } + uses ac-common:ospf-authentication; + uses ac-common:service-status; + } + container isis { + when "derived-from-or-self(../type, " + + "'vpn-common:isis-routing')" { + description + "Only applies when the protocol is IS-IS."; + } + if-feature "vpn-common:rtg-isis"; + description + "Configuration specific to IS-IS."; + uses ac-common:isis-basic; + leaf level { + type identityref { + base vpn-common:isis-level; + } + description + "Can be 'level-1', 'level-2', or 'level-1-2'."; + reference + "RFC 9181: A Common YANG Data Model for Layer 2 and + Layer 3 VPNs"; + } + leaf metric { + type uint32 { + range "0 .. 16777215"; + } + description + "Metric of the AC. It is used in the routing state + calculation and path selection."; + } + leaf passive { + type boolean; + description + "When set to false, the interface is active. In such + mode, the interface sends or receives IS-IS protocol + control packets. + + When set to true, the interface is passive. That is, + it suppresses the sending of IS-IS updates through the + specified interface."; + } + uses ac-common:isis-authentication; + uses ac-common:service-status; + } + container rip { + when "derived-from-or-self(../type, " + + "'vpn-common:rip-routing')" { + description + "Only applies when the protocol is RIP. + For IPv4, the model assumes that RIP + version 2 is used."; + } + if-feature "vpn-common:rtg-rip"; + description + "Configuration specific to RIP routing."; + uses rip-base; + uses ac-common:rip-authentication; + uses ac-common:service-status; + } + container vrrp { + when "derived-from-or-self(../type, " + + "'vpn-common:vrrp-routing')" { + description + "Only applies when the protocol is the VRRP."; + } + if-feature "vpn-common:rtg-vrrp"; + description + "Configuration specific to VRRP."; + reference + "RFC 9568: Virtual Router Redundancy Protocol (VRRP) + Version 3 for IPv4 and IPv6"; + leaf address-family { + type identityref { + base vpn-common:address-family; + } + description + "Indicates whether IPv4, IPv6, or both address families + are to be enabled."; + } + leaf vrrp-group { + type uint8 { + range "1..255"; + } + description + "Includes the VRRP group identifier."; + } + leaf backup-peer { + type inet:ip-address; + description + "Indicates the IP address of the peer."; + } + leaf-list virtual-ip-address { + type inet:ip-address; + description + "Virtual IP addresses for a single VRRP + group."; + reference + "RFC 9568: Virtual Router Redundancy Protocol (VRRP) + Version 3 for IPv4 and IPv6, Sections 1.2 + and 1.3"; + } + leaf priority { + type uint8 { + range "1..254"; + } + description + "Sets the local priority of the VRRP speaker."; + } + leaf ping-reply { + type boolean; + description + "Controls whether the VRRP speaker should reply to ping + requests."; + } + uses ac-common:service-status; + } + } + } + + // OAM + + grouping bfd { + description + "Grouping for BFD."; + leaf session-type { + type identityref { + base vpn-common:bfd-session-type; + } + description + "Specifies the BFD session type."; + } + leaf desired-min-tx-interval { + type uint32; + units "microseconds"; + description + "The minimum interval between transmissions of BFD Control + packets, as desired by the operator."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.8.7"; + } + leaf required-min-rx-interval { + type uint32; + units "microseconds"; + description + "The minimum interval between received BFD Control packets + that the PE should support."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.8.7"; + } + leaf local-multiplier { + type uint8 { + range "1..255"; + } + description + "Specifies the detection multiplier that is transmitted to a + BFD peer. + + The detection interval for the receiving BFD peer is + calculated by multiplying the value of the negotiated + transmission interval by the received detection multiplier + value."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.8.7"; + } + leaf holdtime { + type uint32; + units "milliseconds"; + description + "Expected BFD holdtime. + + The customer may impose some fixed values for the holdtime + period if the provider allows the customer to use this + function."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.8.18"; + } + } + + grouping bfd-routing { + description + "Defines a basic BFD grouping for routing configuration."; + container bfd { + if-feature "vpn-common:bfd"; + description + "BFD control for this nighbor."; + leaf enabled { + type boolean; + description + "Enables BFD if set to true. BFD is disabled of set to + false."; + } + uses failure-detection-profile-reference; + } + } + + // OAM + + grouping oam { + description + "Defines the Operations, Administration, and Maintenance + (OAM) mechanisms used."; + container bfd { + if-feature "vpn-common:bfd"; + description + "Container for BFD."; + list session { + key "dest-addr"; + description + "List of IP sessions."; + leaf dest-addr { + type inet:ip-address; + description + "IP address of the peer."; + } + leaf source-address { + type union { + type inet:ip-address; + type if:interface-ref; + } + description + "Sets the local IP address to use for the BFD + session. This may be expressed as either + an IP address or a reference to an interface."; + } + uses failure-detection-profile-reference; + uses bfd; + container authentication { + presence "Enables BFD authentication"; + description + "Parameters for BFD authentication."; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Name of the key chain."; + } + leaf meticulous { + type boolean; + description + "Enables meticulous mode."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.7"; + } + } + uses ac-common:service-status; + } + } + } + + // security + + grouping security { + description + "Security parameters for an AC."; + container encryption { + if-feature "vpn-common:encryption"; + description + "Container for AC encryption."; + leaf enabled { + type boolean; + description + "If set to 'true', traffic encryption on the connection is + required. Otherwise, it is disabled."; + } + leaf layer { + when "../enabled = 'true'" { + description + "Included only when encryption is enabled."; + } + type enumeration { + enum layer2 { + description + "Encryption occurs at Layer 2."; + } + enum layer3 { + description + "Encryption occurs at Layer 3. For example, IPsec + may be used when a customer requests Layer 3 + encryption."; + } + } + description + "Indicates the layer on which encryption is applied."; + } + } + container encryption-profile { + when "../encryption/enabled = 'true'" { + description + "Indicates the layer on which encryption is enabled."; + } + description + "Container for the encryption profile."; + choice profile { + description + "Choice for the encryption profile."; + case provider-profile { + uses encryption-profile-reference; + } + case customer-profile { + leaf customer-key-chain { + type key-chain:key-chain-ref; + description + "Customer-supplied key chain."; + } + } + } + } + } + + // AC profile + + grouping ac-profile { + description + "Grouping for attachment circuit profiles."; + container routing-protocols { + description + "Defines routing protocols."; + uses routing-profile; + } + container oam { + description + "Defines the OAM mechanisms used for the AC profile."; + container bfd { + if-feature "vpn-common:bfd"; + description + "Container for BFD."; + uses bfd; + } + } + } + + // Parent and Child ACs + + grouping ac-hierarchy { + description + "Container for parent and child AC references."; + container parent-ref { + description + "Specifies the parent AC that is inherited by an AC. + Parent ACs are used, e.g., in contexts where multiple + CEs are terminating the same AC, but some specific + information is required for each peer SAP."; + uses ac-ntw:attachment-circuit-reference; + } + container child-ref { + config false; + description + "Specifies a child AC that relies upon a parent AC."; + uses ac-ntw:attachment-circuit-references; + } + } + + // AC network provisioning + + grouping ac { + description + "Grouping for attachment circuits."; + leaf description { + type string; + description + "Associates a description with an AC."; + } + container l2-connection { + if-feature "ac-common:layer2-ac"; + description + "Defines Layer 2 protocols and parameters that are required + to enable AC connectivity."; + uses l2-connection-if-ref; + } + container ip-connection { + if-feature "ac-common:layer3-ac"; + description + "Defines IP connection parameters."; + uses ip-connection; + } + container routing-protocols { + description + "Defines routing protocols."; + uses routing; + } + container oam { + description + "Defines the OAM mechanisms used for the AC."; + uses oam; + } + container security { + description + "AC-specific security parameters."; + uses security; + } + container service { + description + "AC-specific bandwith parameters."; + leaf mtu { + type uint32; + units "bytes"; + description + "Layer 2 MTU."; + } + uses ac-svc:bandwidth; + container qos { + if-feature "vpn-common:qos"; + description + "QoS configuration."; + container qos-profiles { + description + "QoS profile configuration."; + list qos-profile { + key "qos-profile-ref"; + description + "Points to a QoS profile."; + uses qos-profile-reference; + leaf direction { + type identityref { + base vpn-common:qos-profile-direction; + } + description + "The direction to which the QoS profile + is applied."; + } + } + } + } + container access-control-list { + description + "Container for the Access Control List (ACL)."; + container acl-profiles { + description + "ACL profile configuration."; + list acl-profile { + key "forwarding-profile-ref"; + description + "Points to an ACL profile."; + uses forwarding-profile-reference; + } + } + } + } + } + + augment "/nw:networks/nw:network" { + description + "Add a list of profiles."; + container specific-provisioning-profiles { + description + "Contains a set of valid profiles to reference in the AC + activation."; + uses ac-common:ac-profile-cfg; + } + list ac-profile { + key "name"; + description + "Specifies a list of AC profiles."; + leaf name { + type string; + description + "Name of the AC."; + } + uses ac-ntw:ac-profile; + } + } + + augment "/nw:networks/nw:network/nw:node" { + when '../nw:network-types/sap:sap-network' { + description + "Augmentation parameters apply only for SAP networks."; + } + description + "Augments nodes with AC provisioning details."; + list ac { + key "name"; + description + "List of ACs."; + leaf name { + type string; + description + "A name that identifies the AC locally."; + } + leaf svc-ref { + type ac-svc:attachment-circuit-reference; + description + "A reference to the AC as exposed at the service level."; + } + list profile { + key "ac-profile-ref"; + description + "List of AC profiles."; + uses ac-profile-reference; + } + uses ac-hierarchy; + leaf-list peer-sap-id { + type string; + description + "One or more peer SAPs can be indicated."; + } + uses ac-common:redundancy-group; + uses ac-common:service-status; + uses ac-ntw:ac; + } + } + + augment "/nw:networks/nw:network/nw:node" + + "/sap:service/sap:sap" { + when '../../../nw:network-types/sap:sap-network' { + description + "Augmentation parameters apply only for SAP networks."; + } + description + "Augments SAPs with AC provisioning details."; + list ac { + key "ac-ref"; + description + "Specifies the ACs that are terminated by the SAP."; + uses ac-ntw:attachment-circuit-reference; + } + } +} \ No newline at end of file diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-te-topology@2023-09-28.yang new file mode 100644 index 000000000..b182f7f5a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-te-topology@2023-09-28.yang @@ -0,0 +1,2275 @@ + module ietf-eth-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology"; + prefix "etht"; + + import ietf-network { + prefix "nw"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-yang-types { + prefix "yang"; + reference + "RFC 6991: Common YANG Data Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference + "RFC YYYY: A YANG Data Model for Transport Network Client + Signals"; + } + // RFC Ed.: replace YYYY with actual RFC number, update date + // information and remove this note + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Aihua Guo + + + Editor: Yunbin Xu + + + Editor: Yang Zhao + + + Editor: Xufeng Liu + "; + + description + "This module defines a YANG data model for describing + layer-2 Ethernet transport topologies. The model fully + conforms to the Network Management Datastore + Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-09-28 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Ethernet TE Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "Ethernet technology-specific label range related + information with a presence container indicating that the + label range is an Ethernet technology-specific label range. + + This grouping SHOULD be used together with the + eth-label and eth-label-step groupings to provide Ethernet + technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + + container ethernet-label-range { + presence + "Indicates the label range is an Ethernet label range. + + This container must not be present if there are other + presence containers or attributes indicating another type + of label range."; + description + "Ethernet-specific label range related information."; + + uses etht-types:eth-label-restriction; + } + } + + grouping eth-tran-topology-type { + description + "Identifies the Ethernet Transport topology type"; + + container eth-tran-topology { + presence "indicates a topology type of + Ethernet Transport Network."; + description "Eth transport topology type"; + } + } + + grouping ltp-bandwidth-profiles { + description + "A grouping which represents the bandwidth profile(s) + for the ETH LTP."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe the ingress + and the egress bandwidth profile."; + + container ingress-egress-bandwidth-profile { + description + "The bandwith profile used in the ingress and egress + direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + case asymmetrical { + description + "Different ingress and egress bandwidth profiles + can be specified."; + container ingress-bandwidth-profile { + description + "The bandwidth profile used in the ingress direction."; + uses etht-types:etht-bandwidth-profiles; + } + container egress-bandwidth-profile { + description + "The bandwidth profile used in the egress direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + } + grouping eth-ltp-attributes { + description + "Ethernet transport Link Termination Point (LTP) attributes"; + + leaf ltp-mac-address { + type yang:mac-address; + description + "The MAC address of the Ethernet LTP."; + } + leaf port-vlan-id { + type etht-types:vlanid; + description + "The Port VLAN ID of the Ethernet LTP."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf maximum-frame-size { + type uint16 { + range "64 .. 65535"; + } + description + "Maximum frame size"; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + uses ltp-bandwidth-profiles; + } + + grouping svc-vlan-classification { + description + "Grouping defining the capabilities for VLAN classification."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-classify; + description + "List of VLAN tag types that can be used for the VLAN + classification. In case VLAN classification is not + supported, the list is empty."; + } + leaf vlan-bundling { + type boolean; + description + "In case VLAN classification is supported, indicates whether + VLAN bundling classification is also supported."; + reference + "MEF 10.3: Ethernet Services Attributes Phase 3"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN classification is supported, indicates the + of available VLAN ID values."; + } + } + + grouping svc-vlan-push { + description + "Grouping defining the capabilities for VLAN push or swap + operations."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-type; + description + "List of VLAN tag types that can be used to push or swap a + VLAN tag. In case VLAN push/swap is not supported, the list + is empty."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN push/swap operation is supported, the range + of available VLAN ID values."; + } + } + + grouping eth-svc-attributes { + description + "Ethernet Link Termination Point (LTP) service attributes."; + + container supported-classification { + description + "Service classification capability supported by the + Ethernet Link Termination Point (LTP)."; + + leaf port-classification { + type boolean; + description + "Indicates that the ETH LTP support port-based service + classification."; + } + container vlan-classification { + description + "Service classification capabilities based on the VLAN + tag(s) supported by the ETH LTP."; + leaf vlan-tag-classification { + type boolean; + description + "Indicates that the ETH LTP supports VLAN service + classification."; + } + container outer-tag { + description + "Service classification capabilities based on the outer + VLAN tag, supported by the ETH LTP."; + uses svc-vlan-classification; + } + container second-tag { + description + "Service classification capabilities based on the second + VLAN tag, supported by the ETH LTP."; + leaf second-tag-classification { + type boolean; + must ". = 'false' or " + + "../../vlan-tag-classification = 'true'" { + description + "VLAN service classification based on the second + VLAN tag can be supported only when VLAN service + classification"; + } + description + "Indicates that the ETH LTP support VLAN service + classification based on the second VLAN tag."; + } + uses svc-vlan-classification; + } + } + } + + container supported-vlan-operations { + description + "Reports the VLAN operations supported by the ETH LTP."; + + leaf asymmetrical-operations { + type boolean; + description + "Indicates whether the ETH LTP supports also asymmetrical + VLAN operations.It is assumed that symmetrical VLAN + operations are alwyas supported."; + } + leaf transparent-vlan-operations { + type boolean; + description + "Indicates that the ETH LTP supports transparent + operations."; + } + container vlan-pop { + description + "Indicates VLAN pop or swap operations capabilities."; + + leaf vlan-pop-operations { + type boolean; + description + "Indicates that the ETH LTP supports VLAN pop or + swap operations."; + } + leaf max-pop-tags { + type uint8 { + range "1..2"; + } + description + "Indicates the maximum number of tags that can be + popped/swapped."; + } + } + container vlan-push { + description + "Indicates VLAN push or swap operations capabilities."; + + leaf vlan-push-operation { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or + swap operations."; + } + container outer-tag { + description + "Indicates the supported VLAN operation capabilities + on the outer VLAN tag."; + uses svc-vlan-push; + } + container second-tag { + description + "Indicates the supported VLAN operation capabilities + on the second VLAN tag."; + leaf push-second-tag { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or swap + operations for the second VLAN tag."; + } + uses svc-vlan-push; + } + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + description + "Augment network types to include ETH transport newtork"; + + uses eth-tran-topology-type; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment TE node attributes."; + container eth-node { + presence "The TE node is an Ethernet node."; + description + "Presence container used only to indicate that the TE node + is an Ethernet node."; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment link configuration"; + + container eth-svc { + presence + "When present, indicates that the Link supports Ethernet + client signals."; + description + "Presence container used only to indicate that the link + supports Ethernet client signals."; + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point" { + when "../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description + "Augment ETH LTP attributes"; + + container eth-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Ethernet client signals."; + description + "ETH LTP Service attributes."; + + uses eth-svc-attributes; + } + container eth-link-tp { + description + "Attributes of the Ethernet Link Termination Point (LTP)."; + uses eth-ltp-attributes; + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case eth { + uses etht-types:eth-bandwidth; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label. + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link + information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + "Augment TE label range end for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case eth { + uses etht-types:eth-label-step; + } + } + + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-service@2023-10-23.yang new file mode 100644 index 000000000..222066adf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-service@2023-10-23.yang @@ -0,0 +1,1004 @@ + module ietf-eth-tran-service { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service"; + + prefix "ethtsvc"; + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference "RFC XXXX - A YANG Data Model for Transport + Network Client Signals"; + } + + import ietf-routing-types { + prefix "rt-types"; + reference "RFC 8294 - Common YANG Data Types for the + Routing Area"; + + } + + import ietf-te { + prefix "te"; + reference "RFC YYYY - A YANG Data Model for Traffic + Engineering Tunnels and Interfaces"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com);0 + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines a YANG data model for describing + the Ethernet services. The model fully conforms to the + Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -04 as an WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + + grouping vlan-classification { + description + "A grouping which represents classification + on an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-classify; + description + "The tag type used for VLAN classification."; + } + choice individual-bundling-vlan { + description + "VLAN based classification can be individual + or bundling."; + + case individual-vlan { + leaf vlan-value { + type etht-types:vlanid; + description + "VLAN ID value."; + } + } + + case vlan-bundling { + leaf vlan-range { + type etht-types:vid-range-type; + description + "List of VLAN ID values."; + } + } + } + } + + grouping vlan-write { + description + "A grouping which represents push/pop operations + of an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-type; + description + "The VLAN tag type to push/swap."; + } + leaf vlan-value { + type etht-types:vlanid; + description + "The VLAN ID value to push/swap."; + } + /* + * To be added: this attribute is used when: + * a) the ETH service has only one CoS (as in current version) + * b) as a default when a mapping between a given CoS value + * and the PCP value is not defined (in future versions) + */ + leaf default-pcp { + type uint8 { + range "0..7"; + } + description + "The default Priority Code Point (PCP) value to push/swap"; + } + } + + grouping vlan-operations { + description + "A grouping which represents VLAN operations."; + + leaf pop-tags { + type uint8 { + range "1..2"; + } + description + "The number of VLAN tags to pop (or swap if used in + conjunction with push-tags)"; + } + container push-tags { + description + "The VLAN tags to push (or swap if used in + conjunction with pop-tags)"; + + container outer-tag { + presence + "Indicates existence of the outermost VLAN tag to + push/swap"; + + description + "The outermost VLAN tag to push/swap."; + + uses vlan-write; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' + + 'tag-type = "etht-types:c-vlan-tag-type"' + { + + error-message + " + When pushing/swapping two tags, the outermost tag must + be specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when pushing/swapping + two tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + + presence + "Indicates existence of a second outermost VLAN tag to + push/swap"; + + description + "The second outermost VLAN tag to push/swap."; + uses vlan-write; + } + } + } + + grouping named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + + grouping bandwidth-profiles { + description + "A grouping which represent bandwidth profile configuration."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe both + the ingress and the egress bandwidth profile."; + container ingress-egress-bandwidth-profile { + description + "The bandwdith profile used in both directions."; + uses named-or-value-bandwidth-profile; + } + } + case asymmetrical { + description + "Ingress and egress bandwidth profiles can be specified."; + container ingress-bandwidth-profile { + description + "The bandwdith profile used in the ingress direction."; + uses named-or-value-bandwidth-profile; + } + container egress-bandwidth-profile { + description + "The bandwdith profile used in the egress direction."; + uses named-or-value-bandwidth-profile; + } + } + } + } + + grouping etht-svc-access-parameters { + description + "ETH services access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in + the ETH TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier, used + together with access-node-id to identify the + access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the + access LTP."; + } + + leaf access-role { + type identityref { + base etht-types:access-role; + } + description + "Indicate the role of access, e.g., working or protection. "; + } + + container pm-config { + uses pm-config-grouping; + description + "This grouping is used to set the threshold value for + performance monitoring. "; + } + + container state { + config false; + description + "The state is used to monitor the status of service. "; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + description + "Indicating the operational state of client signal. "; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description + "Indicating the provisional state of client signal, + especially when there is a change, i.e., revise, create. "; + } + } + + leaf performance { + type identityref { + base etht-types:performance; + } + config false; + description + "Performance Monitoring for the service. "; + } + + } + + grouping etht-svc-tunnel-parameters { + description + "ETH services tunnel parameters."; + choice technology { + description + "Service multiplexing is optional and flexible."; + + case native-ethernet { + /* + placeholder to support proprietary multiplexing + (for further discussion) + */ + list eth-tunnels { + key name; + description + "ETH Tunnel list in native Ethernet scenario."; + uses tunnels-grouping; + } + } + + case frame-base { + list otn-tunnels { + key name; + description + "OTN Tunnel list in Frame-based scenario."; + uses tunnels-grouping; + } + } + + case mpls-tp { + container pw { + description + "Pseudowire information for Ethernet over MPLS-TP."; + uses pw-segment-grouping; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf src-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel source TTP"; + } + leaf dst-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel destination TTP"; + } + } + + grouping etht-svc-pm-threshold-config { + description + "Configuraiton parameters for Ethernet service PM thresholds."; + + leaf sending-rate-high { + type uint64; + description + "High threshold of packet sending rate in kbps."; + } + leaf sending-rate-low { + type uint64; + description + "Low threshold of packet sending rate in kbps."; + } + leaf receiving-rate-high { + type uint64; + description + "High threshold of packet receiving rate in kbps."; + } + leaf receiving-rate-low { + type uint64; + description + "Low threshold of packet receiving rate in kbps."; + } + } + + grouping etht-svc-pm-stats { + description + "Ethernet service PM statistics."; + + leaf sending-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + sending rate is above the high threshold"; + } + leaf sending-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + sending rate is below the low threshold"; + } + leaf receiving-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is above the high threshold"; + } + leaf receiving-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is below the low threshold"; + } + } + + grouping etht-svc-instance-config { + description + "Configuraiton parameters for Ethernet services."; + + leaf etht-svc-name { + type string; + description + "Name of the ETH service."; + } + + leaf etht-svc-title { + type string; + description + "The Identifier of the ETH service."; + } + + leaf user-label { + type string; + description + "Alias of the ETH service."; + } + + leaf etht-svc-descr { + type string; + description + "Description of the ETH service."; + } + + leaf etht-svc-customer { + type string; + description + "Customer of the ETH service."; + } + + leaf etht-svc-type { + type etht-types:service-type; + description + "Type of ETH service (p2p, mp2mp or rmp)."; + /* Add default as p2p */ + } + + leaf etht-svc-lifecycle { + type etht-types:lifecycle-status; + description + "Lifecycle state of ETH service."; + /* Add default as installed */ + } + uses te-types:te-topology-identifier; + + uses resilience-grouping; + list etht-svc-end-points { + key etht-svc-end-point-name; + description + "The logical end point for the ETH service. "; + uses etht-svc-end-point-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + container underlay { + description + "The unterlay tunnel information that carrying the + ETH service. "; + uses etht-svc-tunnel-parameters; + } + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "ETH service administrative state."; + } + } + + grouping etht-svc-instance-state { + description + "State parameters for Ethernet services."; + + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + default te-types:tunnel-state-up; + description "ETH service operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description "ETH service provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + description + "Time of ETH service creation."; + } + leaf last-updated-time { + type yang:date-and-time; + description + "Time of ETH service last update."; + } + + leaf created-by { + type string; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + description + "The client signal is last updated by whom, + can be a system ID."; + } + container pm-state { + description + "PM data of E2E Ethernet service"; + uses pm-state-grouping; + } + container error-info { + description "error messages of configuration"; + uses error-info-grouping; + } + } + + grouping pm-state-grouping { + leaf latency { + description + "latency value of the E2E Ethernet service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + /* + * Data nodes + */ + + container etht-svc { + description + "ETH services."; + + container globals { + description + "Globals Ethernet configuration data container"; + list named-bandwidth-profiles { + key bandwidth-profile-name; + description + "List of named bandwidth profiles used by + Ethernet services."; + + leaf bandwidth-profile-name { + type string; + description + "Name of the bandwidth profile."; + } + uses etht-types:etht-bandwidth-profiles; + } + } + list etht-svc-instances { + key etht-svc-name; + description + "The list of p2p ETH service instances"; + + uses etht-svc-instance-config; + + container state { + config false; + description + "Ethernet Service states."; + + uses etht-svc-instance-state; + } + } + } + + grouping resilience-grouping { + description + "Grouping for resilience configuration. "; + container resilience { + description + "To configure the data plane protection parameters, + currently a placeholder only, future candidate attributes + include, Revert, WTR, Hold-off Timer, ..."; + uses te:protection-restoration-properties; + } + } + + grouping etht-svc-end-point-grouping { + description + "Grouping for the end point configuration."; + leaf etht-svc-end-point-name { + type string; + description + "The name of the logical end point of ETH service. "; + } + + leaf etht-svc-end-point-id { + type string; + description + "The identifier of the logical end point of ETH service."; + } + + leaf etht-svc-end-point-descr { + type string; + description + "The description of the logical end point of ETH service. "; + } + + leaf topology-role { + type identityref { + base etht-types:topology-role; + } + description + "Indicating the underlay topology role, + e.g., hub,spoke, any-to-any "; + } + + container resilience { + description + "Placeholder for resilience configuration, for future study. "; + } + + list etht-svc-access-points { + key access-point-id; + min-elements "1"; + /* + Open Issue: + Is it possible to limit the max-elements only for p2p services? + max-elements "2"; + */ + description + "List of the ETH trasport services access point instances."; + + leaf access-point-id { + type string; + description + "ID of the service access point instance"; + } + uses etht-svc-access-parameters; + } + + leaf service-classification-type { + type identityref { + base etht-types:service-classification-type; + } + description + "Service classification type."; + } + + choice service-classification { + description + "Access classification can be port-based or + VLAN based."; + case port-classification { + /* no additional information */ + } + + case vlan-classification { + container outer-tag { + presence "The outermost VLAN tag exists"; + description + "Classifies traffic using the outermost VLAN tag."; + + uses vlan-classification; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' + + 'tag-type = "etht-types:classify-c-vlan"' + { + error-message + " + When matching two tags, the outermost tag must be + specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when matching two + tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + presence "The second outermost VLAN tag exists"; + + description + "Classifies traffic using the second outermost VLAN tag."; + + uses vlan-classification; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf split-horizon-group { + type string; + description "Identify a split horizon group"; + } + uses bandwidth-profiles; + + container vlan-operations { + description + "Configuration of VLAN operations."; + choice direction { + description + "Whether the VLAN operations are symmetrical or + asymmetrical"; + case symmetrical { + container symmetrical-operation { + uses vlan-operations; + description + "Symmetrical operations. + Expressed in the ingress direction, but + the reverse operation is applied to egress traffic"; + } + } + case asymmetrical { + container asymmetrical-operation { + description "Asymmetrical operations"; + container ingress { + uses vlan-operations; + description "Ingress operations"; + } + container egress { + uses vlan-operations; + description "Egress operations"; + } + } + } + } + } + } + + grouping pm-config-grouping { + description + "Grouping used for Performance Monitoring Configuration. "; + leaf pm-enable { + type boolean; + description + "Whether to enable the performance monitoring."; + } + + leaf sending-rate-high { + type uint64; + description + "The upperbound of sending rate."; + } + + leaf sending-rate-low { + type uint64; + description + "The lowerbound of sending rate."; + } + + leaf receiving-rate-high { + type uint64; + description + "The upperbound of receiving rate."; + } + + leaf receiving-rate-low { + type uint64; + description + "The lowerbound of receiving rate."; + } + } + + grouping pw-segment-grouping { + description + "Grouping used for PW configuration. "; + leaf pw-id { + type string; + description + "The Identifier information of pseudowire. "; + } + + leaf pw-name { + type string; + description + "The name information of pseudowire."; + } + + leaf transmit-label { + type rt-types:mpls-label; + description + "Transmit label information in PW. "; + } + + leaf receive-label { + type rt-types:mpls-label; + description + "Receive label information in PW. "; + } + leaf encapsulation-type { + type identityref { + base etht-types:encapsulation-type; + } + description + "The encapsulation type, raw or tag. "; + } + + leaf oper-status { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description + "The operational state of the PW segment. "; + } + + container ingress-bandwidth-profile { + description + "Bandwidth Profile for ingress. "; + uses pw-segment-named-or-value-bandwidth-profile; + } + + list pw-paths { + key path-id; + description + "A list of pw paths. "; + + leaf path-id { + type uint8; + description + "The identifier of pw paths. "; + + } + + list tp-tunnels { + key name; + description + "Names of TP Tunnel underlay"; + leaf name { + type string; + description + "Names of TP Tunnel underlay"; + } + } + } + + } + grouping pw-segment-named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:pw-segement-bandwidth-profile-grouping; + } + } + } + + grouping tunnels-grouping { + description + "A group of tunnels. "; + leaf name { + type leafref { + path "/te:te/te:tunnels/te:tunnel/te:name"; + require-instance false; + } + description "Dependency tunnel name"; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description "LSP encoding type"; + reference "RFC3945"; + } + leaf switching-type { + type identityref { + base te-types:switching-capabilities; + } + description "LSP switching type"; + reference "RFC3945"; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-types@2023-10-23.yang new file mode 100644 index 000000000..f46908b34 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-eth-tran-types@2023-10-23.yang @@ -0,0 +1,457 @@ + module ietf-eth-tran-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types"; + + prefix "etht-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines the ETH types. + The model fully conforms to the Network Management + Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -05 as a WG draft"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Identities + */ + + identity eth-vlan-tag-type { + description + "ETH VLAN tag type."; + } + + identity c-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Customer VLAN"; + } + + identity s-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Service VLAN (QinQ)"; + } + + identity service-classification-type { + description + "Service classification."; + } + + identity port-classification { + base service-classification-type; + description + "Port classification."; + } + identity vlan-classification { + base service-classification-type; + description + "VLAN classification."; + } + + identity eth-vlan-tag-classify { + description + "VLAN tag classification."; + } + + identity classify-c-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Customer VLAN tag. + Only C-tag type is accepted"; + } + + identity classify-s-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Service VLAN (QinQ) tag. + Only S-tag type is accepted"; + } + + identity classify-s-or-c-vlan { + base eth-vlan-tag-classify; + description + "Classify S-VLAN or C-VLAN tag-classify. + Either tag is accepted"; + } + + identity bandwidth-profile-type-ir { + description + "Bandwidth Profile Types"; + } + + identity mef-10-bwp { + base bandwidth-profile-type-ir; + description + "MEF 10 Bandwidth Profile"; + } + + identity rfc-2697-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2697 Bandwidth Profile"; + } + identity rfc-2698-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2698 Bandwidth Profile"; + } + + identity rfc-4115-bwp { + base bandwidth-profile-type-ir; + description + "RFC 4115 Bandwidth Profile"; + } + + identity service-type-ir { + description + "Type of Ethernet service."; + } + + identity p2p-svc { + base service-type-ir; + description + "Ethernet point-to-point service (EPL, EVPL)."; + } + + identity rmp-svc { + base service-type-ir; + description + "Ethernet rooted-multitpoint service (E-TREE, EP-TREE)."; + } + + identity mp2mp-svc { + base service-type-ir; + description + "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN)."; + } + + identity lifecycle-status-ir { + description + "Lifecycle Status."; + } + + identity installed { + base lifecycle-status-ir; + description + "Installed."; + } + + identity planned { + base lifecycle-status-ir; + description + "Planned."; + } + + identity pending-removal { + base lifecycle-status-ir; + description + "Pending Removal."; + } + + /* + * Type Definitions + */ + + typedef eth-tag-type { + type identityref { + base eth-vlan-tag-type; + } + description + "Identifies a specific ETH VLAN tag type."; + } + + typedef eth-tag-classify { + type identityref { + base eth-vlan-tag-classify; + } + description + "Identifies a specific VLAN tag classification."; + } + + typedef vlanid { + type uint16 { + range "1..4094"; + } + description + "The 12-bit VLAN-ID used in the VLAN Tag header."; + } + + typedef vid-range-type { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of VLAN Ids, or non overlapping VLAN ranges, in + ascending order, between 1 and 4094. + This type is used to match an ordered list of VLAN Ids, or + contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the + range 1 to 4094, and included in the list in non overlapping + ascending order. + + For example: 1,10-100,50,500-1000"; + } + + typedef bandwidth-profile-type { + type identityref { + base bandwidth-profile-type-ir; + } + description + "Identifies a specific Bandwidth Profile type."; + } + + typedef service-type { + type identityref { + base service-type-ir; + } + description + "Identifies the type of Ethernet service."; + } + + typedef lifecycle-status { + type identityref { + base lifecycle-status-ir; + } + description + "Identifies the lLifecycle Status ."; + } + + /* + * Grouping Definitions + */ + + grouping etht-bandwidth-profiles { + description + "Bandwidth profile configuration paramters."; + + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + leaf color-aware { + type boolean; + description + "Indicates weather the color-mode is + color-aware or color-blind."; + } + leaf coupling-flag { + type boolean; + /* Need to indicate that Coupling Flag is defined only for MEF 10 + + must + '../bw-profile-type = "mef-10-bwp"' + */ + description + "Coupling Flag."; + } + } + + identity topology-role { + description + "The role of underlay topology: e.g., hub, spoke, + any-to-any."; + } + + identity resilience { + description + "Placeholder for resilience information in data plane, + for future study. "; + } + + identity access-role { + description + "Indicating whether the access is a working or protection access."; + } + + identity root-primary { + base access-role; + description + "Designates the primary root UNI of an E-Tree service, and may also + designates the UNI access role of E-LINE and E-LAN service."; + } + + identity root-backup { + base access-role; + description + "Designates the backup root UNI of an E-Tree service."; + } + + identity leaf-access { + base access-role; + description + "Designates the leaf UNI of an E-Tree service."; + } + + identity leaf-edge { + base access-role; + description ""; + } + + identity performance { + description + "Placeholder for performance information, for future study."; + } + + identity encapsulation-type { + description + "Indicating how the service is encapsulated (to PW), e.g, raw or tag. "; + } + grouping pw-segement-bandwidth-profile-grouping { + description + "bandwidth profile grouping for PW segment. "; + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + } + grouping eth-bandwidth { + description + "Available bandwith for ethernet."; + leaf eth-bandwidth { + type uint64{ + range "0..10000000000"; + } + units "Kbps"; + description + "Available bandwith value expressed in kilobits per second"; + } + } + + grouping eth-label-restriction { + description + "Label Restriction for ethernet."; + leaf tag-type { + type etht-types:eth-tag-type; + description "VLAN tag type."; + } + leaf priority { + type uint8; + description "priority."; + } + } + grouping eth-label { + description + "Label for ethernet."; + leaf vlanid { + type etht-types:vlanid; + description + "VLAN tag id."; + } + } + + grouping eth-label-step { + description "Label step for Ethernet VLAN"; + leaf eth-step { + type uint16 { + range "1..4095"; + } + default 1; + description + "Label step which represent possible increments for + an Ethernet VLAN tag."; + reference + "IEEE 802.1ad: Provider Bridges."; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ethertypes@2019-03-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ethertypes@2019-03-04.yang new file mode 100644 index 000000000..fd055074a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-ethertypes@2019-03-04.yang @@ -0,0 +1,381 @@ +module ietf-ethertypes { + namespace "urn:ietf:params:xml:ns:yang:ietf-ethertypes"; + prefix ethertypes; + + organization + "IETF NETMOD (Network Modeling) Working Group."; + + contact + "WG Web: + WG List: + + Editor: Mahesh Jethanandani + "; + + description + "This module contains common definitions for the + Ethertype used by different modules. It is a + placeholder module, till such time that IEEE + starts a project to define these Ethertypes + and publishes a standard. + + At that time, this module can be deprecated. + + Copyright (c) 2019 IETF Trust and the persons identified as + the document authors. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD + License set forth in Section 4.c of the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8519; see + the RFC itself for full legal notices."; + + revision 2019-03-04 { + description + "Initial revision."; + reference + "RFC 8519: YANG Data Model for Network Access Control + Lists (ACLs)."; + } + + typedef ethertype { + type union { + type uint16; + type enumeration { + enum ipv4 { + value 2048; + description + "Internet Protocol version 4 (IPv4) with a + hex value of 0x0800."; + reference + "RFC 791: Internet Protocol."; + } + enum arp { + value 2054; + description + "Address Resolution Protocol (ARP) with a + hex value of 0x0806."; + reference + "RFC 826: An Ethernet Address Resolution Protocol: Or + Converting Network Protocol Addresses to 48.bit + Ethernet Address for Transmission on Ethernet + Hardware."; + } + enum wlan { + value 2114; + description + "Wake-on-LAN. Hex value of 0x0842."; + } + enum trill { + value 8947; + description + "Transparent Interconnection of Lots of Links. + Hex value of 0x22F3."; + reference + "RFC 6325: Routing Bridges (RBridges): Base Protocol + Specification."; + } + enum srp { + value 8938; + description + "Stream Reservation Protocol. Hex value of + 0x22EA."; + reference + "IEEE 801.1Q-2011."; + } + enum decnet { + value 24579; + description + "DECnet Phase IV. Hex value of 0x6003."; + } + enum rarp { + value 32821; + description + "Reverse Address Resolution Protocol. + Hex value 0x8035."; + reference + "RFC 903: A Reverse Address Resolution Protocol."; + } + enum appletalk { + value 32923; + description + "Appletalk (Ethertalk). Hex value of 0x809B."; + } + enum aarp { + value 33011; + description + "Appletalk Address Resolution Protocol. Hex value + of 0x80F3."; + } + enum vlan { + value 33024; + description + "VLAN-tagged frame (IEEE 802.1Q) and Shortest Path + Bridging IEEE 802.1aq with Network-Network + Interface (NNI) compatibility. Hex value of + 0x8100."; + reference + "IEEE 802.1Q."; + } + enum ipx { + value 33079; + description + "Internetwork Packet Exchange (IPX). Hex value + of 0x8137."; + } + enum qnx { + value 33284; + description + "QNX Qnet. Hex value of 0x8204."; + } + enum ipv6 { + value 34525; + description + "Internet Protocol Version 6 (IPv6). Hex value + of 0x86DD."; + reference + "RFC 8200: Internet Protocol, Version 6 (IPv6) + Specification + RFC 8201: Path MTU Discovery for IP version 6."; + } + enum efc { + value 34824; + description + "Ethernet flow control using pause frames. + Hex value of 0x8808."; + reference + "IEEE 802.1Qbb."; + } + enum esp { + value 34825; + description + "Ethernet Slow Protocol. Hex value of 0x8809."; + reference + "IEEE 802.3-2015."; + } + enum cobranet { + value 34841; + description + "CobraNet. Hex value of 0x8819."; + } + enum mpls-unicast { + value 34887; + description + "Multiprotocol Label Switching (MPLS) unicast traffic. + Hex value of 0x8847."; + reference + "RFC 3031: Multiprotocol Label Switching Architecture."; + } + enum mpls-multicast { + value 34888; + description + "MPLS multicast traffic. Hex value of 0x8848."; + reference + "RFC 3031: Multiprotocol Label Switching Architecture."; + } + enum pppoe-discovery { + value 34915; + description + "Point-to-Point Protocol over Ethernet. Used during + the discovery process. Hex value of 0x8863."; + reference + "RFC 2516: A Method for Transmitting PPP Over Ethernet + (PPPoE)."; + } + enum pppoe-session { + value 34916; + description + "Point-to-Point Protocol over Ethernet. Used during + session stage. Hex value of 0x8864."; + reference + "RFC 2516: A Method for Transmitting PPP Over Ethernet + (PPPoE)."; + } + enum intel-ans { + value 34925; + description + "Intel Advanced Networking Services. Hex value of + 0x886D."; + } + enum jumbo-frames { + value 34928; + description + "Jumbo frames or Ethernet frames with more than + 1500 bytes of payload, up to 9000 bytes."; + } + enum homeplug { + value 34939; + description + "Family name for the various power line + communications. Hex value of 0x887B."; + } + enum eap { + value 34958; + description + "Ethernet Access Protocol (EAP) over LAN. Hex value + of 0x888E."; + reference + "IEEE 802.1X."; + } + enum profinet { + value 34962; + description + "PROcess FIeld Net (PROFINET). Hex value of 0x8892."; + } + enum hyperscsi { + value 34970; + description + "Small Computer System Interface (SCSI) over Ethernet. + Hex value of 0x889A."; + } + enum aoe { + value 34978; + description + "Advanced Technology Advancement (ATA) over Ethernet. + Hex value of 0x88A2."; + } + enum ethercat { + value 34980; + description + "Ethernet for Control Automation Technology (EtherCAT). + Hex value of 0x88A4."; + } + enum provider-bridging { + value 34984; + description + "Provider Bridging (802.1ad) and Shortest Path Bridging + (801.1aq). Hex value of 0x88A8."; + reference + "IEEE 802.1ad and IEEE 802.1aq)."; + } + enum ethernet-powerlink { + value 34987; + description + "Ethernet Powerlink. Hex value of 0x88AB."; + } + enum goose { + value 35000; + description + "Generic Object Oriented Substation Event (GOOSE). + Hex value of 0x88B8."; + reference + "IEC/ISO 8802-2 and 8802-3."; + } + enum gse { + value 35001; + description + "Generic Substation Events. Hex value of 88B9."; + reference + "IEC 61850."; + } + enum sv { + value 35002; + description + "Sampled Value Transmission. Hex value of 0x88BA."; + reference + "IEC 61850."; + } + enum lldp { + value 35020; + description + "Link Layer Discovery Protocol (LLDP). Hex value of + 0x88CC."; + reference + "IEEE 802.1AB."; + } + enum sercos { + value 35021; + description + "Sercos Interface. Hex value of 0x88CD."; + } + enum wsmp { + value 35036; + description + "WAVE Short Message Protocol (WSMP). Hex value of + 0x88DC."; + } + enum homeplug-av-mme { + value 35041; + description + "HomePlug AV Mobile Management Entity (MME). Hex value + of 88E1."; + } + enum mrp { + value 35043; + description + "Media Redundancy Protocol (MRP). Hex value of + 0x88E3."; + reference + "IEC 62439-2."; + } + enum macsec { + value 35045; + description + "MAC Security. Hex value of 0x88E5."; + reference + "IEEE 802.1AE."; + } + enum pbb { + value 35047; + description + "Provider Backbone Bridges (PBB). Hex value of + 0x88E7."; + reference + "IEEE 802.1ah."; + } + enum cfm { + value 35074; + description + "Connectivity Fault Management (CFM). Hex value of + 0x8902."; + reference + "IEEE 802.1ag."; + } + enum fcoe { + value 35078; + description + "Fiber Channel over Ethernet (FCoE). Hex value of + 0x8906."; + reference + "T11 FC-BB-5."; + } + enum fcoe-ip { + value 35092; + description + "FCoE Initialization Protocol. Hex value of 0x8914."; + } + enum roce { + value 35093; + description + "RDMA over Converged Ethernet (RoCE). Hex value of + 0x8915."; + } + enum tte { + value 35101; + description + "TTEthernet Protocol Control Frame (TTE). Hex value + of 0x891D."; + reference + "SAE AS6802."; + } + enum hsr { + value 35119; + description + "High-availability Seamless Redundancy (HSR). Hex + value of 0x892F."; + reference + "IEC 62439-3:2016."; + } + } + } + description + "The uint16 type placeholder is defined to enable + users to manage their own ethertypes not + covered by the module. Otherwise, the module contains + enum definitions for the more commonly used ethertypes."; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-inet-types@2013-07-15.yang new file mode 100644 index 000000000..790bafc31 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-inet-types@2013-07-15.yang @@ -0,0 +1,459 @@ + module ietf-inet-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; + prefix "inet"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - ip-address-no-zone + - ipv4-address-no-zone + - ipv6-address-no-zone"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of types related to protocol fields ***/ + + typedef ip-version { + type enumeration { + enum unknown { + value "0"; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum ipv4 { + value "1"; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum ipv6 { + value "2"; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + typedef dscp { + type uint8 { + range "0..63"; + } + description + "The dscp type represents a Differentiated Services Code Point + that may be used for marking packets in a traffic stream. + + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2."; + reference + "RFC 3289: Management Information Base for the Differentiated + Services Architecture + RFC 2474: Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers + RFC 2780: IANA Allocation Guidelines For Values In + the Internet Protocol and Related Headers"; + } + + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The ipv6-flow-label type represents the flow identifier or Flow + Label in an IPv6 packet header that may be used to + discriminate traffic flows. + + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2."; + reference + "RFC 3595: Textual Conventions for IPv6 Flow Label + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef port-number { + type uint16 { + range "0..65535"; + } + description + "The port-number type represents a 16-bit port number of an + Internet transport-layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from . + + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2."; + reference + "RFC 768: User Datagram Protocol + RFC 793: Transmission Control Protocol + RFC 4960: Stream Control Transmission Protocol + RFC 4340: Datagram Congestion Control Protocol (DCCP) + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + /*** collection of types related to autonomous systems ***/ + + typedef as-number { + type uint32; + description + "The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASes. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2."; + reference + "RFC 1930: Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271: A Border Gateway Protocol 4 (BGP-4) + RFC 4001: Textual Conventions for Internet Network Addresses + RFC 6793: BGP Support for Four-Octet Autonomous System (AS) + Number Space"; + } + + /*** collection of types related to IP addresses and hostnames ***/ + + typedef ip-address { + type union { + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "The ip-address type represents an IP address and is IP + version neutral. The format of the textual representation + implies the IP version. This type supports scoped addresses + by allowing zone identifiers in the address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '(%[\p{N}\p{L}]+)?'; + } + description + "The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format for the zone index is the numerical + format"; + } + + typedef ipv6-address { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(%[\p{N}\p{L}]+)?'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(%.+)?'; + } + description + "The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format of IPv6 addresses uses the textual + representation defined in Section 4 of RFC 5952. The + canonical format for the zone index is the numerical + format as described in Section 11.2 of RFC 4007."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-address-no-zone { + type union { + type inet:ipv4-address-no-zone; + type inet:ipv6-address-no-zone; + } + description + "The ip-address-no-zone type represents an IP address and is + IP version neutral. The format of the textual representation + implies the IP version. This type does not support scoped + addresses since it does not allow zone identifiers in the + address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address-no-zone { + type inet:ipv4-address { + pattern '[0-9\.]*'; + } + description + "An IPv4 address without a zone index. This type, derived from + ipv4-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + } + + typedef ipv6-address-no-zone { + type inet:ipv6-address { + pattern '[0-9a-fA-F:\.]*'; + } + description + "An IPv6 address without a zone index. This type, derived from + ipv6-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-prefix { + type union { + type inet:ipv4-prefix; + type inet:ipv6-prefix; + } + description + "The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version."; + } + + typedef ipv4-prefix { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; + } + description + "The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix."; + } + + typedef ipv6-prefix { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(/.+)'; + } + + description + "The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 128. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, the IPv6 address is represented + as defined in Section 4 of RFC 5952."; + reference + "RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + /*** collection of domain name and URI types ***/ + + typedef domain-name { + type string { + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + length "1..253"; + } + description + "The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitly or may depend on the configuration of the + resolver. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be A-labels as per RFC 5890."; + reference + "RFC 952: DoD Internet Host Table Specification + RFC 1034: Domain Names - Concepts and Facilities + RFC 1123: Requirements for Internet Hosts -- Application + and Support + RFC 2782: A DNS RR for specifying the location of services + (DNS SRV) + RFC 5890: Internationalized Domain Names in Applications + (IDNA): Definitions and Document Framework"; + } + + typedef host { + type union { + type inet:ip-address; + type inet:domain-name; + } + description + "The host type represents either an IP address or a DNS + domain name."; + } + + typedef uri { + type string; + description + "The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017."; + reference + "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax + RFC 3305: Report from the Joint W3C/IETF URI Planning Interest + Group: Uniform Resource Identifiers (URIs), URLs, + and Uniform Resource Names (URNs): Clarifications + and Recommendations + RFC 5017: MIB Textual Conventions for Uniform Resource + Identifiers (URIs)"; + } + + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-l3-unicast-topology@2018-02-26.yang new file mode 100644 index 000000000..39fcebd76 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-l3-unicast-topology@2018-02-26.yang @@ -0,0 +1,359 @@ +module ietf-l3-unicast-topology { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; + prefix "l3t"; + import ietf-network { + prefix "nw"; + } + import ietf-network-topology { + prefix "nt"; + } + import ietf-inet-types { + prefix "inet"; + } + import ietf-routing-types { + prefix "rt-types"; + } + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + Editor: Alexander Clemm + + Editor: Jan Medved + + Editor: Robert Varga + + Editor: Xufeng Liu + + Editor: Nitin Bahadur + + Editor: Hariharan Ananthakrishnan + "; + description + "This module defines a model for Layer 3 Unicast + topologies. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of + RFC 8346; see the RFC itself for full legal notices."; + revision "2018-02-26" { + description + "Initial revision."; + reference + "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + + identity flag-identity { + description "Base type for flags"; + } + + typedef l3-event-type { + type enumeration { + enum "add" { + description + "A Layer 3 node, link, prefix, or termination point has + been added"; + } + enum "remove" { + description + "A Layer 3 node, link, prefix, or termination point has + been removed"; + } + enum "update" { + description + "A Layer 3 node, link, prefix, or termination point has + been updated"; + } + } + description "Layer 3 event type for notifications"; + } + + typedef prefix-flag-type { + type identityref { + base "flag-identity"; + } + description "Prefix flag attributes"; + } + + typedef node-flag-type { + type identityref { + base "flag-identity"; + } + description "Node flag attributes"; + } + + typedef link-flag-type { + type identityref { + base "flag-identity"; + } + description "Link flag attributes"; + } + + typedef l3-flag-type { + type identityref { + base "flag-identity"; + } + description "L3 flag attributes"; + } + + grouping l3-prefix-attributes { + description + "L3 prefix attributes"; + leaf prefix { + type inet:ip-prefix; + description + "IP prefix value"; + } + leaf metric { + type uint32; + description + "Prefix metric"; + } + leaf-list flag { + type prefix-flag-type; + description + "Prefix flags"; + } + } + grouping l3-unicast-topology-type { + description "Identifies the topology type to be L3 Unicast."; + container l3-unicast-topology { + presence "indicates L3 Unicast topology"; + description + "The presence of the container node indicates L3 Unicast + topology"; + } + } + grouping l3-topology-attributes { + description "Topology scope attributes"; + container l3-topology-attributes { + description "Contains topology attributes"; + leaf name { + type string; + description + "Name of the topology"; + } + leaf-list flag { + type l3-flag-type; + description + "Topology flags"; + } + } + } + grouping l3-node-attributes { + description "L3 node scope attributes"; + container l3-node-attributes { + description + "Contains node attributes"; + leaf name { + type inet:domain-name; + description + "Node name"; + } + leaf-list flag { + type node-flag-type; + description + "Node flags"; + } + leaf-list router-id { + type rt-types:router-id; + description + "Router-id for the node"; + } + list prefix { + key "prefix"; + description + "A list of prefixes along with their attributes"; + uses l3-prefix-attributes; + } + } + } + grouping l3-link-attributes { + description + "L3 link scope attributes"; + container l3-link-attributes { + description + "Contains link attributes"; + leaf name { + type string; + description + "Link Name"; + } + leaf-list flag { + type link-flag-type; + description + "Link flags"; + } + leaf metric1 { + type uint64; + description + "Link Metric 1"; + } + leaf metric2 { + type uint64; + description + "Link Metric 2"; + } + } + } + grouping l3-termination-point-attributes { + description "L3 termination point scope attributes"; + container l3-termination-point-attributes { + description + "Contains termination point attributes"; + choice termination-point-type { + description + "Indicates the termination point type"; + case ip { + leaf-list ip-address { + type inet:ip-address; + description + "IPv4 or IPv6 address."; + } + } + case unnumbered { + leaf unnumbered-id { + type uint32; + description + "Unnumbered interface identifier. + The identifier will correspond to the ifIndex value + of the interface, i.e., the ifIndex value of the + ifEntry that represents the interface in + implementations where the Interfaces Group MIB + (RFC 2863) is supported."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + } + case interface-name { + leaf interface-name { + type string; + description + "Name of the interface. The name can (but does not + have to) correspond to an interface reference of a + containing node's interface, i.e., the path name of a + corresponding interface data node on the containing + node reminiscent of data type interface-ref defined + in RFC 8343. It should be noted that data type + interface-ref of RFC 8343 cannot be used directly, + + as this data type is used to reference an interface + in a datastore of a single node in the network, not + to uniquely reference interfaces across a network."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + } + } + } + } + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces new network type for L3 Unicast topology"; + uses l3-unicast-topology-type; + } + augment "/nw:networks/nw:network" { + when "nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast for the network as a whole"; + uses l3-topology-attributes; + } + augment "/nw:networks/nw:network/nw:node" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast node-level attributes "; + uses l3-node-attributes; + } + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "Augments topology link attributes"; + uses l3-link-attributes; + } + augment "/nw:networks/nw:network/nw:node/" + +"nt:termination-point" { + when "../../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description "Augments topology termination point configuration"; + uses l3-termination-point-attributes; + } + notification l3-node-event { + description + "Notification event for L3 node"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + uses l3-node-attributes; + } + notification l3-link-event { + description + "Notification event for L3 link"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:link-ref; + uses l3-unicast-topology-type; + uses l3-link-attributes; + } + notification l3-prefix-event { + description + "Notification event for L3 prefix"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + container prefix { + description + "Contains L3 prefix attributes"; + uses l3-prefix-attributes; + } + } + notification termination-point-event { + description + "Notification event for L3 termination point"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:tp-ref; + uses l3-unicast-topology-type; + uses l3-termination-point-attributes; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-layer1-types@2022-10-14.yang new file mode 100644 index 000000000..188336931 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-layer1-types@2022-10-14.yang @@ -0,0 +1,1414 @@ + module ietf-layer1-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types"; + prefix "l1-types"; + + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + "; + + description + "This module defines Layer 1 types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2022 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + + + + + they appear in all capitals, as shown here."; + + revision "2022-10-14" { + description + "Initial Version"; + reference + "RFC XXXX: A YANG Data Model for Layer 1 Types"; + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Identities + */ + + identity tributary-slot-granularity { + description + "Tributary Slot Granularity (TSG)"; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity tsg-1.25G { + base tributary-slot-granularity; + description + "1.25G tributary slot granularity"; + } + + identity tsg-2.5G { + base tributary-slot-granularity; + description + "2.5G tributary slot granularity"; + } + + identity tsg-5G { + base tributary-slot-granularity; + description + "5G tributary slot granularity"; + } + + identity odu-type { + description + "Base identity from which specific Optical Data Unit (ODU) + type is derived."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU0 { + base odu-type; + description + "ODU0 type (1.24Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU1 { + base odu-type; + description + "ODU1 type (2.49Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2 { + base odu-type; + description + "ODU2 type (10.03Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2e { + base odu-type; + description + "ODU2e type (10.39Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU3 { + base odu-type; + description + "ODU3 type (40.31Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU4 { + base odu-type; + description + "ODU4 type (104.79Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex { + base odu-type; + description + "ODUflex type (flexible bit rate, not resizable). + + It could be used for any type of ODUflex, including + ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s), + ODUflex(IMP) and ODUflex(FlexE-aware)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex-resizable { + base odu-type; + description + "ODUflex protocol (flexible bit rate, resizable). + + + + + It could be used only for ODUflex(GFP,n,k)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity protocol { + description + "Base identity from which specific protocol is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Ethernet { + base protocol; + description + "Ethernet protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Fibre-Channel { + base protocol; + description + "Fibre-Channel (FC) protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SDH { + base protocol; + description + "SDH protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SONET { + base protocol; + description + "SONET protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + identity client-signal { + description + "Base identity from which specific Constant Bit Rate (CBR) + client signal is derived"; + } + + identity coding-func { + description + "Base identity from which specific coding function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-1Gb { + base client-signal; + description + "Client signal type of 1GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-10Gb-LAN { + base client-signal; + description + "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet"; + } + + identity ETH-10Gb-WAN { + base client-signal; + description + "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet"; + } + + identity ETH-40Gb { + base client-signal; + description + "Client signal type of 40GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-100Gb { + base client-signal; + description + "Client signal type of 100GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity STM-1 { + base client-signal; + base coding-func; + description + "Client signal type of STM-1; + STM-1 G.707 (N=1) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-4 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-4; + STM-4 G.707 (N=4) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-16 { + base client-signal; + base coding-func; + description + "Client signal type of STM-16; + STM-16 G.707 (N=16) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-64 { + base client-signal; + base coding-func; + description + "Client signal type of STM-64; + STM-64 G.707 (N=64) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-256 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-256; + STM-256 G.707 (N=256) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-3 { + base client-signal; + base coding-func; + description + "Client signal type of OC3; + OC-3 GR-253-CORE (N=3) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-12 { + base client-signal; + base coding-func; + description + "Client signal type of OC12; + OC-12 GR-253-CORE (N=12) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-48 { + base client-signal; + base coding-func; + description + "Client signal type of OC48; + OC-48 GR-253-CORE (N=48) coding function."; + + + + + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-192 { + base client-signal; + base coding-func; + description + "Client signal type of OC192; + OC-192 GR-253-CORE (N=192) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-768 { + base client-signal; + base coding-func; + description + "Client signal type of OC768; + OC-768 GR-253-CORE (N=768) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-100 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-100; + FC-100 FC-FS-2 (1.0625 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-200; + FC-200 FC-FS-2 (2.125 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-400 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-400; + FC-400 FC-FS-2 (4.250 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-800 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-800; + FC-800 FC-FS-2 (8.500 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1200; + FC-1200 FC-10GFC (10.51875 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1600 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1600; + FC-1600 FC-FS-3 (14.025 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-3200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-3200; + FC-3200 FC-FS-4 (28.05 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FICON-4G { + base client-signal; + description + "Client signal type of Fibre Connection 4G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity FICON-8G { + base client-signal; + description + "Client signal type of Fibre Connection 8G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-1000X { + base coding-func; + description + "1000BASE-X PCS clause 36 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GW { + base coding-func; + description + "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50 + coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GR { + base coding-func; + description + "10GBASE-R (LAN PHY) PCS clause 49 coding function."; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-40GR { + base coding-func; + description + "40GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-100GR { + base coding-func; + description + "100GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity optical-interface-func { + description + "Base identity from which optical-interface-function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SX-PMD-1000 { + base optical-interface-func; + description + "SX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX-PMD-1000 { + base optical-interface-func; + description + "LX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX10-PMD-1000 { + base optical-interface-func; + + + + + description + "LX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity BX10-PMD-1000 { + base optical-interface-func; + description + "BX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LW-PMD-10G { + base optical-interface-func; + description + "LW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity EW-PMD-10G { + base optical-interface-func; + description + "EW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR-PMD-10G { + base optical-interface-func; + description + "LR-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER-PMD-10G { + base optical-interface-func; + description + "ER-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-40G { + base optical-interface-func; + description + "LR4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-40G { + base optical-interface-func; + description + "ER4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FR-PMD-40G { + base optical-interface-func; + description + "FR-PMD-clause-89 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-100G { + base optical-interface-func; + description + "LR4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-100G { + base optical-interface-func; + description + "ER4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + /* + * Typedefs + */ + + typedef otn-tpn { + type uint16 { + range "1..4095"; + } + description + "Tributary Port Number (TPN) for OTN. "; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-ts { + type uint16 { + range "1..4095"; + } + description + "Tributary Slot (TS) for OTN."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-label-range-type { + type enumeration { + enum trib-slot { + description + "Defines a range of OTN tributary slots (TS)."; + } + enum trib-port { + description + "Defines a range of OTN tributary ports (TPN)."; + } + } + description + "Defines the type of OTN label range: TS or TPN. "; + } + + typedef gfp-k { + type enumeration { + enum 2 { + description + "The ODU2.ts rate (1,249,177.230 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,2). "; + } + + + + + enum 3 { + description + "The ODU3.ts rate (1,254,470.354 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,3). "; + } + enum 4 { + description + "The ODU4.ts rate (1,301,467.133 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,4). "; + } + } + description + "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for + the Optical Transport Network (OTN)"; + } + + typedef flexe-client-rate { + type union { + type uint16; + type enumeration { + enum "10G" { + description + "Represents a 10G FlexE Client signal (s=2)"; + } + enum "40G" { + description + "Represents a 40G FlexE Client signal (s=8)"; + } + } + } + description + "The FlexE Client signal rate (s x 5,156,250.000 kbit/s) + used to compute the rate of an ODUflex(IMP, s). + Valid values for s are s=2 (10G), s=4 (40G) and + s=5 x n (n x 25G). + In the first two cases an enumeration value + (either 10G or 40G) is used, while in the latter case + the value of n is used"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + } + + typedef odtu-flex-type { + type enumeration { + enum "2" { + + + + + description + "The ODTU2.ts ODTU type."; + } + enum "3" { + description + "The ODTU3.ts ODTU type."; + } + enum "4" { + description + "The ODTU4.ts ODTU type."; + } + enum "Cn" { + description + "The ODTUCn.ts ODTU type."; + } + } + description + "The type of Optical Data Tributary Unit (ODTU), + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by an ODUflex LSP, according to + the (19-1a) and (20-1a) formulas defined in G.709."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and + clause 20.5: Interfaces for the Optical Transport + Network (OTN)"; + } + + typedef bandwidth-scientific-notation { + type string { + pattern + '0(\.0?)?([eE](\+)?0?)?|' + + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?'; + } + units "bps"; + description + "Bandwidth values, expressed using the scientific notation + in bits per second. + + The encoding format is the external decimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99 + for 32-bit decimal floating-point numbers: + (-1)**(S) * 10**(Exponent) * (Significant), + where Significant uses 7 digits. + + An implementation for this representation MAY use decimal32 + or binary32. The range of the Exponent is from -95 to +96 + for decimal32, and from -38 to +38 for binary32. + As a bandwidth value, the format is restricted to be + + + + + normalized, non-negative, and non-fraction: + n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0, + where 'd' and 'D' are decimal digits; 'n' and 'N' are + non-zero decimal digits; 'e' and 'E' indicate a power of ten. + Some examples are 0e0, 1e10, and 9.953e9."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + /* + * Groupings + */ + + grouping otn-link-bandwidth { + description + "Bandwidth attributes for OTN links"; + container otn { + description + "Bandwidth attributes for OTN links"; + list odulist { + key "odu-type"; + description + "OTN bandwidth definition"; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf number { + type uint16; + description "Number of ODUs"; + } + leaf ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + + + + + "The number of Tributary Slots (TS) that + could be used by all the ODUflex LSPs."; + } + } + } + } + + grouping otn-path-bandwidth { + description + "Bandwidth attributes for OTN paths."; + container otn { + description + "Bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + choice oduflex-type { + when 'derived-from-or-self(./odu-type,"ODUflex") or + derived-from-or-self(./odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + description + "Types of ODUflex used to compute the ODUflex + nominal bit rate."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + case generic { + leaf nominal-bit-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Nominal ODUflex bit rate."; + } + } + case cbr { + leaf client-type { + type identityref { + base client-signal; + + + + + } + mandatory true; + description + "The type of Constant Bit Rate (CBR) client signal + of an ODUflex(CBR)."; + } + } + case gfp-n-k { + leaf gfp-n { + type uint8 { + range "1..80"; + } + mandatory true; + description + "The value of n for an ODUflex(GFP,n,k)."; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + leaf gfp-k { + type gfp-k; + description + "The value of k for an ODUflex(GFP,n,k). + + If omitted, it is calculated from the value of gfp-n + as described in Table 7-8 of G.709"; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + } + case flexe-client { + leaf flexe-client { + type flexe-client-rate; + mandatory true; + description + "The rate of the FlexE-client for an ODUflex(IMP,s)."; + } + } + case flexe-aware { + leaf flexe-aware-n { + type uint16; + mandatory true; + description + "The rate of FlexE-aware client signal + for ODUflex(FlexE-aware)"; + } + } + + + + + case packet { + leaf opuflex-payload-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Either the GFP-F encapsulated packet client nominal + bit rate for an ODUflex(GFP) or the 64b/66b encoded + packet client nominal bit rate for an ODUflex(IMP)."; + } + } + } + } + } + + grouping otn-max-path-bandwidth { + description + "Maximum bandwidth attributes for OTN paths."; + container otn { + description + "Maximum bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf max-ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + "The maximum number of Tributary Slots (TS) that could be + used by an ODUflex LSP."; + } + } + } + + grouping otn-label-range-info { + + + + + description + "Label range information for OTN. + + This grouping SHOULD be used together with the + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn-label-range { + description + "Label range information for OTN."; + leaf range-type { + type otn-label-range-type; + description "The type of range (e.g., TPN or TS) + to which the label range applies"; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description + "Tributary slot granularity (TSG) to which the label range + applies. + + This leaf MUST be present when the range-type is TS. + + This leaf MAY be omitted when mapping an ODUk over an OTUk + Link. In this case the range-type is tpn, with only one + entry (ODUk), and the tpn range has only one value (1)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf-list odu-type-list { + type identityref { + base odu-type; + } + description + "List of ODU types to which the label range applies. + + An Empty odu-type-list means that the label range + applies to all the supported ODU types."; + } + leaf priority { + type uint8 { + range 0..7; + } + description + + + + + "Priority in Interface Switching Capability + Descriptor (ISCD)."; + reference + "RFC4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + } + } + + grouping otn-label-start-end { + description + "The OTN label-start or label-end used to specify an OTN label + range. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn { + description + "Label start or label end for OTN."; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + when "../../../../otn-label-range/range-type = + 'trib-slot'" { + + + + + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + } + } + } + } + } + + grouping otn-label-hop { + description "OTN Label"; + reference + "RFC7139, section 6: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + container otn { + description + "Label hop for OTN."; + leaf tpn { + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description "Tributary Slot Granularity (TSG)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf ts-list { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of available Tributary Slots (TS) ranging + + + + + between 1 and 4095. If multiple values or + ranges are given, they all MUST be disjoint + and MUST be in ascending order. + For example 1-20,25,50-1000."; + reference + "RFC 7139: GMPLS Signaling Extensions for Control + of Evolving G.709 Optical Transport Networks"; + } + } + } + + grouping otn-label-step { + description + "Label step for OTN. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-start-end groupings to + provide OTN technology-specific label information to the + models which use the label-restriction-info grouping defined + in the module ietf-te-types."; + container otn { + description + "Label step for OTN"; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Label step which represents possible increments for + Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + + + + + when "../../../otn-label-range/range-type = + 'trib-slot'" { + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Label step which represents possible increments for + Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-netconf-acm@2018-02-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-netconf-acm@2018-02-14.yang new file mode 100644 index 000000000..bf4855faf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-netconf-acm@2018-02-14.yang @@ -0,0 +1,464 @@ +module ietf-netconf-acm { + + namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm"; + + prefix nacm; + + import ietf-yang-types { + prefix yang; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + + contact + "WG Web: + WG List: + + Author: Andy Bierman + + + Author: Martin Bjorklund + "; + + description + "Network Configuration Access Control Model. + + Copyright (c) 2012 - 2018 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD + License set forth in Section 4.c of the IETF Trust's + Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8341; see + the RFC itself for full legal notices."; + + revision "2018-02-14" { + description + "Added support for YANG 1.1 actions and notifications tied to + data nodes. Clarified how NACM extensions can be used by + other data models."; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + + revision "2012-02-22" { + description + "Initial version."; + reference + "RFC 6536: Network Configuration Protocol (NETCONF) + Access Control Model"; + } + + /* + * Extension statements + */ + + extension default-deny-write { + description + "Used to indicate that the data model node + represents a sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have write access to the node. An + explicit access control rule is required for all other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-write' extension MAY appear within a data + definition statement. It is ignored otherwise."; + } + + extension default-deny-all { + description + "Used to indicate that the data model node + controls a very sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have read, write, or execute access to + the node. An explicit access control rule is required for all + other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-all' extension MAY appear within a data + definition statement, 'rpc' statement, or 'notification' + statement. It is ignored otherwise."; + } + + /* + * Derived types + */ + + typedef user-name-type { + type string { + length "1..max"; + } + description + "General-purpose username string."; + } + + typedef matchall-string-type { + type string { + pattern '\*'; + } + description + "The string containing a single asterisk '*' is used + to conceptually represent all possible values + for the particular leaf using this data type."; + } + + typedef access-operations-type { + type bits { + bit create { + description + "Any protocol operation that creates a + new data node."; + } + bit read { + description + "Any protocol operation or notification that + returns the value of a data node."; + } + bit update { + description + "Any protocol operation that alters an existing + data node."; + } + bit delete { + description + "Any protocol operation that removes a data node."; + } + bit exec { + description + "Execution access to the specified protocol operation."; + } + } + description + "Access operation."; + } + + typedef group-name-type { + type string { + length "1..max"; + pattern '[^\*].*'; + } + description + "Name of administrative group to which + users can be assigned."; + } + + typedef action-type { + type enumeration { + enum permit { + description + "Requested action is permitted."; + } + enum deny { + description + "Requested action is denied."; + } + } + description + "Action taken by the server when a particular + rule matches."; + } + + typedef node-instance-identifier { + type yang:xpath1.0; + description + "Path expression used to represent a special + data node, action, or notification instance-identifier + string. + + A node-instance-identifier value is an + unrestricted YANG instance-identifier expression. + All the same rules as an instance-identifier apply, + except that predicates for keys are optional. If a key + predicate is missing, then the node-instance-identifier + represents all possible server instances for that key. + + This XML Path Language (XPath) expression is evaluated in the + following context: + + o The set of namespace declarations are those in scope on + the leaf element where this type is used. + + o The set of variable bindings contains one variable, + 'USER', which contains the name of the user of the + current session. + + o The function library is the core function library, but + note that due to the syntax restrictions of an + instance-identifier, no functions are allowed. + + o The context node is the root node in the data tree. + + The accessible tree includes actions and notifications tied + to data nodes."; + } + + /* + * Data definition statements + */ + + container nacm { + nacm:default-deny-all; + + description + "Parameters for NETCONF access control model."; + + leaf enable-nacm { + type boolean; + default "true"; + description + "Enables or disables all NETCONF access control + enforcement. If 'true', then enforcement + is enabled. If 'false', then enforcement + is disabled."; + } + + leaf read-default { + type action-type; + default "permit"; + description + "Controls whether read access is granted if + no appropriate rule is found for a + particular read request."; + } + + leaf write-default { + type action-type; + default "deny"; + description + "Controls whether create, update, or delete access + is granted if no appropriate rule is found for a + particular write request."; + } + + leaf exec-default { + type action-type; + default "permit"; + description + "Controls whether exec access is granted if no appropriate + rule is found for a particular protocol operation request."; + } + + leaf enable-external-groups { + type boolean; + default "true"; + description + "Controls whether the server uses the groups reported by the + NETCONF transport layer when it assigns the user to a set of + NACM groups. If this leaf has the value 'false', any group + names reported by the transport layer are ignored by the + server."; + } + + leaf denied-operations { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request was denied."; + } + + leaf denied-data-writes { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request to alter + a configuration datastore was denied."; + } + + leaf denied-notifications { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that + a notification was dropped for a subscription because + access to the event type was denied."; + } + + container groups { + description + "NETCONF access control groups."; + + list group { + key name; + + description + "One NACM group entry. This list will only contain + configured entries, not any entries learned from + any transport protocols."; + + leaf name { + type group-name-type; + description + "Group name associated with this entry."; + } + + leaf-list user-name { + type user-name-type; + description + "Each entry identifies the username of + a member of the group associated with + this entry."; + } + } + } + + list rule-list { + key name; + ordered-by user; + description + "An ordered collection of access control rules."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule-list."; + } + leaf-list group { + type union { + type matchall-string-type; + type group-name-type; + } + description + "List of administrative groups that will be + assigned the associated access rights + defined by the 'rule' list. + + The string '*' indicates that all groups apply to the + entry."; + } + + list rule { + key name; + ordered-by user; + description + "One access control rule. + + Rules are processed in user-defined order until a match is + found. A rule matches if 'module-name', 'rule-type', and + 'access-operations' match the request. If a rule + matches, the 'action' leaf determines whether or not + access is granted."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule."; + } + + leaf module-name { + type union { + type matchall-string-type; + type string; + } + default "*"; + description + "Name of the module associated with this rule. + + This leaf matches if it has the value '*' or if the + object being accessed is defined in the module with the + specified module name."; + } + choice rule-type { + description + "This choice matches if all leafs present in the rule + match the request. If no leafs are present, the + choice matches all requests."; + case protocol-operation { + leaf rpc-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if + its value equals the requested protocol operation + name."; + } + } + case notification { + leaf notification-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if its + value equals the requested notification name."; + } + } + + case data-node { + leaf path { + type node-instance-identifier; + mandatory true; + description + "Data node instance-identifier associated with the + data node, action, or notification controlled by + this rule. + + Configuration data or state data + instance-identifiers start with a top-level + data node. A complete instance-identifier is + required for this type of path value. + + The special value '/' refers to all possible + datastore contents."; + } + } + } + + leaf access-operations { + type union { + type matchall-string-type; + type access-operations-type; + } + default "*"; + description + "Access operations associated with this rule. + + This leaf matches if it has the value '*' or if the + bit corresponding to the requested operation is set."; + } + + leaf action { + type action-type; + mandatory true; + description + "The access control action associated with the + rule. If a rule has been determined to match a + particular request, then this object is used + to determine whether to permit or deny the + request."; + } + + leaf comment { + type string; + description + "A textual description of the access rule."; + } + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network-topology@2018-02-26.yang new file mode 100644 index 000000000..0538ac01b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network-topology@2018-02-26.yang @@ -0,0 +1,294 @@ + module ietf-network-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; + prefix nt; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base model for a network topology, + augmenting the base network data model with links to connect + nodes, as well as termination points to terminate links + on nodes. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef link-id { + type inet:uri; + description + "An identifier for a link in a topology. The precise + structure of the link-id will be up to the implementation. + The identifier SHOULD be chosen such that the same link in a + real network topology will always be identified through the + same identifier, even if the data model is instantiated in + separate datastores. An implementation MAY choose to capture + semantics in the identifier -- for example, to indicate the + type of link and/or the type of topology of which the link is + a part."; + } + + typedef tp-id { + type inet:uri; + description + "An identifier for termination points on a node. The precise + structure of the tp-id will be up to the implementation. + The identifier SHOULD be chosen such that the same termination + point in a real network topology will always be identified + through the same identifier, even if the data model is + instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of termination point and/or the type of + node that contains the termination point."; + } + + grouping link-ref { + description + "This grouping can be used to reference a link in a specific + network. Although it is not used in this module, it is + defined here for the convenience of augmenting modules."; + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nt:link/nt:link-id"; + require-instance false; + } + description + "A type for an absolute reference to a link instance. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:network-ref; + } + + grouping tp-ref { + description + "This grouping can be used to reference a termination point + in a specific node. Although it is not used in this module, + it is defined here for the convenience of augmenting + modules."; + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/nt:termination-point/nt:tp-id"; + require-instance false; + } + description + "A type for an absolute reference to a termination point. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:node-ref; + } + + augment "/nw:networks/nw:network" { + description + "Add links to the network data model."; + list link { + key "link-id"; + description + "A network link connects a local (source) node and + a remote (destination) node via a set of the respective + node's termination points. It is possible to have several + links between the same source and destination nodes. + Likewise, a link could potentially be re-homed between + termination points. Therefore, in order to ensure that we + would always know to distinguish between links, every link + is identified by a dedicated link identifier. Note that a + link models a point-to-point link, not a multipoint link."; + leaf link-id { + type link-id; + description + "The identifier of a link in the topology. + A link is specific to a topology to which it belongs."; + } + container source { + description + "This container holds the logical source of a particular + link."; + leaf source-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Source node identifier. Must be in the same topology."; + } + leaf source-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "source-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the source node + and terminates the link."; + } + } + + container destination { + description + "This container holds the logical destination of a + particular link."; + leaf dest-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Destination node identifier. Must be in the same + network."; + } + leaf dest-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "dest-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the + destination node and terminates the link."; + } + } + list supporting-link { + key "network-ref link-ref"; + description + "Identifies the link or links on which this link depends."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which underlay topology + the supporting link is present."; + } + + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/link/link-id"; + require-instance false; + } + description + "This leaf identifies a link that is a part + of this link's underlay. Reference loops in which + a link identifies itself as its underlay, either + directly or transitively, are not allowed."; + } + } + } + } + augment "/nw:networks/nw:network/nw:node" { + description + "Augments termination points that terminate links. + Termination points can ultimately be mapped to interfaces."; + list termination-point { + key "tp-id"; + description + "A termination point can terminate a link. + Depending on the type of topology, a termination point + could, for example, refer to a port or an interface."; + leaf tp-id { + type tp-id; + description + "Termination point identifier."; + } + list supporting-termination-point { + key "network-ref node-ref tp-ref"; + description + "This list identifies any termination points on which a + given termination point depends or onto which it maps. + Those termination points will themselves be contained + in a supporting node. This dependency information can be + inferred from the dependencies between links. Therefore, + this item is not separately configurable. Hence, no + corresponding constraint needs to be articulated. + The corresponding information is simply provided by the + implementing system."; + + leaf network-ref { + type leafref { + path "../../../nw:supporting-node/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which topology the + supporting termination point is present."; + } + leaf node-ref { + type leafref { + path "../../../nw:supporting-node/nw:node-ref"; + require-instance false; + } + description + "This leaf identifies in which node the supporting + termination point is present."; + } + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/termination-point/tp-id"; + require-instance false; + } + description + "Reference to the underlay node (the underlay node must + be in a different topology)."; + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network@2018-02-26.yang new file mode 100644 index 000000000..d9da81eee --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-network@2018-02-26.yang @@ -0,0 +1,193 @@ + module ietf-network { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network"; + prefix nw; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base data model for a collection + of nodes in a network. Node definitions are further used + in network topologies and inventories. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef node-id { + type inet:uri; + description + "Identifier for a node. The precise structure of the node-id + will be up to the implementation. For example, some + implementations MAY pick a URI that includes the network-id + as part of the path. The identifier SHOULD be chosen + such that the same node in a real network topology will + always be identified through the same identifier, even if + the data model is instantiated in separate datastores. An + implementation MAY choose to capture semantics in the + identifier -- for example, to indicate the type of node."; + } + + typedef network-id { + type inet:uri; + description + "Identifier for a network. The precise structure of the + network-id will be up to the implementation. The identifier + SHOULD be chosen such that the same network will always be + identified through the same identifier, even if the data model + is instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of network."; + } + + grouping network-ref { + description + "Contains the information necessary to reference a network -- + for example, an underlay network."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "Used to reference a network -- for example, an underlay + network."; + } + } + + grouping node-ref { + description + "Contains the information necessary to reference a node."; + leaf node-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node/nw:node-id"; + require-instance false; + } + description + "Used to reference a node. + Nodes are identified relative to the network that + contains them."; + } + uses network-ref; + } + + container networks { + description + "Serves as a top-level container for a list of networks."; + list network { + key "network-id"; + description + "Describes a network. + A network typically contains an inventory of nodes, + topological information (augmented through the + network-topology data model), and layering information."; + leaf network-id { + type network-id; + description + "Identifies a network."; + } + container network-types { + description + "Serves as an augmentation target. + The network type is indicated through corresponding + presence containers augmented into this container."; + } + list supporting-network { + key "network-ref"; + description + "An underlay network, used to represent layered network + topologies."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "References the underlay network."; + } + } + + list node { + key "node-id"; + description + "The inventory of nodes of this network."; + leaf node-id { + type node-id; + description + "Uniquely identifies a node within the containing + network."; + } + list supporting-node { + key "network-ref node-ref"; + description + "Represents another node that is in an underlay network + and that supports this node. Used to represent layering + structure."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "References the underlay network of which the + underlay node is a part."; + } + leaf node-ref { + type leafref { + path "/nw:networks/nw:network/nw:node/nw:node-id"; + require-instance false; + } + description + "References the underlay node itself."; + } + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-otn-topology@2023-07-06.yang new file mode 100644 index 000000000..587612e8e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-otn-topology@2023-07-06.yang @@ -0,0 +1,2405 @@ + module ietf-otn-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology"; + prefix "otnt"; + + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-layer1-types { + prefix "l1-types"; + reference + "I-D.ietf-ccamp-layer1-types: A YANG Data Model + for Layer 1 Types"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Xufeng Liu + + + Editor: Sergio Belotti + + + + + + Editor: Oscar Gonzalez de Dios + "; + + description + "This module defines a protocol independent Layer 1/ODU topology + data model. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-07-06 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Optical Transport Network + Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "OTN technology-specific label range related information with + a presence container indicating that the label range is an + OTN technology-specific label range. + + This grouping SHOULD be used together with the + + + + + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + uses l1-types:otn-label-range-info { + refine otn-label-range { + presence + "Indicates the label range is an OTN label range. + + This container MUST NOT be present if there are other + presence containers or attributes indicating another type + of label range."; + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + container otn-topology { + presence "indicates a topology type of Optical Transport + Network (OTN)-electrical layer."; + description "OTN topology type"; + } + description "augment network types to include OTN newtork"; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network."; + } + description "Augment TE node attributes."; + container otn-node { + presence "The TE node is an OTN node."; + description + "Introduce new TE node type for OTN node."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description "Augment only for OTN network."; + } + description "Augment link configuration"; + + container otn-link { + description + "Attributes of the OTN Link."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link."; + } + leaf tsg { + type identityref { + base l1-types:tributary-slot-granularity; + } + description "Tributary slot granularity."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf distance { + type uint32; + description "distance in the unit of kilometers"; + } + } + container client-svc { + presence + "When present, indicates that the Link supports Costant + Bit Rate (CBR) client signals."; + description + "Attributes of the Link supporting CBR client signals."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + min-elements 1; + description + "List of client signal types supported by the Link."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te" { + + + + + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network"; + } + description "OTN TP attributes config in ODU topology."; + + container otn-ltp { + description + "Attributes of the OTN Link Termination Point (LTP)."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link Termination Point (LTP)."; + } + } + container client-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Costant Bit Rate (CBR) client signals."; + description + "OTN LTP Service attributes."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + description + "List of client signal types supported by the LTP."; + } + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link Termination + Point (LTP) is used to compute the number of Tributary + Slots (TS) required by the ODUflex LSPs set up on this + OTN LTP."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + + + + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + + + + + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + terminated on this OTN Tunnel Termination Point + (TTP)."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN Local + Link Connectivities."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN Local + Link Connectivyt entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + + + + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + + + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + + + + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + + + + + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case otn { + + + + + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + + + + + of the TE node connectivity matrices information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + + + + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + + + + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + + + + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + + + + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE link."; + case otn { + uses l1-types:otn-label-step; + } + + + + + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment TE label range step for the TE link + information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + + + + + "Augment TE label range end for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case otn { + uses l1-types:otn-label-step; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-packet-fields@2019-03-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-packet-fields@2019-03-04.yang new file mode 100644 index 000000000..2fb797bd8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-packet-fields@2019-03-04.yang @@ -0,0 +1,576 @@ +module ietf-packet-fields { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-packet-fields"; + prefix packet-fields; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991 - Common YANG Data Types."; + } + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991 - Common YANG Data Types."; + } + + import ietf-ethertypes { + prefix eth; + reference + "RFC 8519 - YANG Data Model for Network Access Control + Lists (ACLs)."; + } + + organization + "IETF NETMOD (Network Modeling) Working Group."; + + contact + "WG Web: + WG List: netmod@ietf.org + + Editor: Mahesh Jethanandani + mjethanandani@gmail.com + Editor: Lisa Huang + huangyi_99@yahoo.com + Editor: Sonal Agarwal + sagarwal12@gmail.com + Editor: Dana Blair + dana@blairhome.com"; + + description + "This YANG module defines groupings that are used by + the ietf-access-control-list YANG module. Their usage + is not limited to ietf-access-control-list and can be + used anywhere as applicable. + + Copyright (c) 2019 IETF Trust and the persons identified as + the document authors. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD + License set forth in Section 4.c of the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8519; see + the RFC itself for full legal notices."; + + revision 2019-03-04 { + description + "Initial version."; + reference + "RFC 8519: YANG Data Model for Network Access Control + Lists (ACLs)."; + } + + /* + * Typedefs + */ + typedef operator { + type enumeration { + enum lte { + description + "Less than or equal to."; + } + enum gte { + description + "Greater than or equal to."; + } + enum eq { + description + "Equal to."; + } + enum neq { + description + "Not equal to."; + } + } + description + "The source and destination port range definitions + can be further qualified using an operator. An + operator is needed only if the lower-port is specified + and the upper-port is not specified. The operator + therefore further qualifies the lower-port only."; + } + + /* + * Groupings + */ + grouping port-range-or-operator { + choice port-range-or-operator { + case range { + leaf lower-port { + type inet:port-number; + must '. <= ../upper-port' { + error-message + "The lower-port must be less than or equal to + the upper-port."; + } + mandatory true; + description + "Lower boundary for a port."; + } + leaf upper-port { + type inet:port-number; + mandatory true; + description + "Upper boundary for a port."; + } + } + case operator { + leaf operator { + type operator; + default "eq"; + description + "Operator to be applied on the port below."; + } + leaf port { + type inet:port-number; + mandatory true; + description + "Port number along with the operator on which to + match."; + } + } + description + "Choice of specifying a port range or a single + port along with an operator."; + } + description + "Grouping for port definitions in the form of a + choice statement."; + } + + grouping acl-ip-header-fields { + description + "IP header fields common to IPv4 and IPv6"; + reference + "RFC 791: Internet Protocol."; + + leaf dscp { + type inet:dscp; + description + "Differentiated Services Code Point."; + reference + "RFC 2474: Definition of the Differentiated Services + Field (DS Field) in the IPv4 and IPv6 + Headers."; + } + + leaf ecn { + type uint8 { + range "0..3"; + } + description + "Explicit Congestion Notification."; + reference + "RFC 3168: The Addition of Explicit Congestion + Notification (ECN) to IP."; + } + + leaf length { + type uint16; + description + "In the IPv4 header field, this field is known as the Total + Length. Total Length is the length of the datagram, measured + in octets, including internet header and data. + + In the IPv6 header field, this field is known as the Payload + Length, which is the length of the IPv6 payload, i.e., the rest + of the packet following the IPv6 header, in octets."; + reference + "RFC 791: Internet Protocol + RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; + } + leaf ttl { + type uint8; + description + "This field indicates the maximum time the datagram is allowed + to remain in the internet system. If this field contains the + value zero, then the datagram must be dropped. + + In IPv6, this field is known as the Hop Limit."; + reference + "RFC 791: Internet Protocol + RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; + } + leaf protocol { + type uint8; + description + "Internet Protocol number. Refers to the protocol of the + payload. In IPv6, this field is known as 'next-header', + and if extension headers are present, the protocol is + present in the 'upper-layer' header."; + reference + "RFC 791: Internet Protocol + RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; + } + } + + grouping acl-ipv4-header-fields { + description + "Fields in the IPv4 header."; + leaf ihl { + type uint8 { + range "5..60"; + } + description + "In an IPv4 header field, the Internet Header Length (IHL) is + the length of the internet header in 32-bit words and + thus points to the beginning of the data. Note that the + minimum value for a correct header is 5."; + } + leaf flags { + type bits { + bit reserved { + position 0; + description + "Reserved. Must be zero."; + } + bit fragment { + position 1; + description + "Setting the value to 0 indicates may fragment, while + setting the value to 1 indicates do not fragment."; + } + bit more { + position 2; + description + "Setting the value to 0 indicates this is the last fragment, + and setting the value to 1 indicates more fragments are + coming."; + } + } + description + "Bit definitions for the Flags field in the IPv4 header."; + } + leaf offset { + type uint16 { + range "20..65535"; + } + description + "The fragment offset is measured in units of 8 octets (64 bits). + The first fragment has offset zero. The length is 13 bits"; + } + leaf identification { + type uint16; + description + "An identifying value assigned by the sender to aid in + assembling the fragments of a datagram."; + } + + choice destination-network { + case destination-ipv4-network { + leaf destination-ipv4-network { + type inet:ipv4-prefix; + description + "Destination IPv4 address prefix."; + } + } + description + "Choice of specifying a destination IPv4 address or + referring to a group of IPv4 destination addresses."; + } + + choice source-network { + case source-ipv4-network { + leaf source-ipv4-network { + type inet:ipv4-prefix; + description + "Source IPv4 address prefix."; + } + } + description + "Choice of specifying a source IPv4 address or + referring to a group of IPv4 source addresses."; + } + } + + grouping acl-ipv6-header-fields { + description + "Fields in the IPv6 header."; + + choice destination-network { + case destination-ipv6-network { + leaf destination-ipv6-network { + type inet:ipv6-prefix; + description + "Destination IPv6 address prefix."; + } + } + description + "Choice of specifying a destination IPv6 address + or referring to a group of IPv6 destination + addresses."; + } + + choice source-network { + case source-ipv6-network { + leaf source-ipv6-network { + type inet:ipv6-prefix; + description + "Source IPv6 address prefix."; + } + } + description + "Choice of specifying a source IPv6 address or + referring to a group of IPv6 source addresses."; + } + + leaf flow-label { + type inet:ipv6-flow-label; + description + "IPv6 Flow label."; + } + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation."; + } + + grouping acl-eth-header-fields { + description + "Fields in the Ethernet header."; + leaf destination-mac-address { + type yang:mac-address; + description + "Destination IEEE 802 Media Access Control (MAC) + address."; + } + leaf destination-mac-address-mask { + type yang:mac-address; + description + "Destination IEEE 802 MAC address mask."; + } + leaf source-mac-address { + type yang:mac-address; + description + "Source IEEE 802 MAC address."; + } + leaf source-mac-address-mask { + type yang:mac-address; + description + "Source IEEE 802 MAC address mask."; + } + leaf ethertype { + type eth:ethertype; + description + "The Ethernet Type (or Length) value represented + in the canonical order defined by IEEE 802. + The canonical representation uses lowercase + characters."; + reference + "IEEE 802-2014, Clause 9.2."; + } + reference + "IEEE 802: IEEE Standard for Local and Metropolitan + Area Networks: Overview and Architecture."; + } + + grouping acl-tcp-header-fields { + description + "Collection of TCP header fields that can be used to + set up a match filter."; + leaf sequence-number { + type uint32; + description + "Sequence number that appears in the packet."; + } + leaf acknowledgement-number { + type uint32; + description + "The acknowledgement number that appears in the + packet."; + } + leaf data-offset { + type uint8 { + range "5..15"; + } + description + "Specifies the size of the TCP header in 32-bit + words. The minimum size header is 5 words and + the maximum is 15 words; thus, this gives a + minimum size of 20 bytes and a maximum of 60 + bytes, allowing for up to 40 bytes of options + in the header."; + } + leaf reserved { + type uint8; + description + "Reserved for future use."; + } + leaf flags { + type bits { + bit cwr { + position 1; + description + "The Congestion Window Reduced (CWR) flag is set + by the sending host to indicate that it received + a TCP segment with the ECN-Echo (ECE) flag set + and had responded in the congestion control + mechanism."; + reference + "RFC 3168: The Addition of Explicit Congestion + Notification (ECN) to IP."; + } + bit ece { + position 2; + description + "ECN-Echo has a dual role, depending on the value + of the SYN flag. It indicates the following: if + the SYN flag is set (1), the TCP peer is ECN + capable, and if the SYN flag is clear (0), a packet + with the Congestion Experienced flag set (ECN=11) + in the IP header was received during normal + transmission (added to the header by RFC 3168). + This serves as an indication of network congestion + (or impending congestion) to the TCP sender."; + reference + "RFC 3168: The Addition of Explicit Congestion + Notification (ECN) to IP."; + } + bit urg { + position 3; + description + "Indicates that the Urgent Pointer field is significant."; + } + bit ack { + position 4; + description + "Indicates that the Acknowledgement field is significant. + All packets after the initial SYN packet sent by the + client should have this flag set."; + } + bit psh { + position 5; + description + "Push function. Asks to push the buffered data to the + receiving application."; + } + bit rst { + position 6; + description + "Reset the connection."; + } + bit syn { + position 7; + description + "Synchronize sequence numbers. Only the first packet + sent from each end should have this flag set. Some + other flags and fields change meaning based on this + flag, and some are only valid for when it is set, + and others when it is clear."; + } + bit fin { + position 8; + description + "Last package from the sender."; + } + } + description + "Also known as Control Bits. Contains nine 1-bit flags."; + reference + "RFC 793: Transmission Control Protocol."; + } + leaf window-size { + type uint16; + units "bytes"; + description + "The size of the receive window, which specifies + the number of window size units beyond the segment + identified by the sequence number in the Acknowledgement + field that the sender of this segment is currently + willing to receive."; + } + leaf urgent-pointer { + type uint16; + description + "This field is an offset from the sequence number + indicating the last urgent data byte."; + } + leaf options { + type binary { + length "1..40"; + } + description + "The length of this field is determined by the + Data Offset field. Options have up to three + fields: Option-Kind (1 byte), Option-Length + (1 byte), and Option-Data (variable). The Option-Kind + field indicates the type of option and is the + only field that is not optional. Depending on + what kind of option we are dealing with, + the next two fields may be set: the Option-Length + field indicates the total length of the option, + and the Option-Data field contains the value of + the option, if applicable."; + } + } + + grouping acl-udp-header-fields { + description + "Collection of UDP header fields that can be used + to set up a match filter."; + leaf length { + type uint16; + description + "A field that specifies the length in bytes of + the UDP header and UDP data. The minimum + length is 8 bytes because that is the length of + the header. The field size sets a theoretical + limit of 65,535 bytes (8-byte header plus 65,527 + bytes of data) for a UDP datagram. However, the + actual limit for the data length, which is + imposed by the underlying IPv4 protocol, is + 65,507 bytes (65,535 minus 8-byte UDP header + minus 20-byte IP header). + + In IPv6 jumbograms, it is possible to have + UDP packets of a size greater than 65,535 bytes. + RFC 2675 specifies that the Length field is set + to zero if the length of the UDP header plus + UDP data is greater than 65,535."; + } + } + + grouping acl-icmp-header-fields { + description + "Collection of ICMP header fields that can be + used to set up a match filter."; + leaf type { + type uint8; + description + "Also known as control messages."; + reference + "RFC 792: Internet Control Message Protocol + RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + leaf code { + type uint8; + description + "ICMP subtype. Also known as control messages."; + reference + "RFC 792: Internet Control Message Protocol + RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + leaf rest-of-header { + type binary; + description + "Unbounded in length, the contents vary based on the + ICMP type and code. Also referred to as 'Message Body' + in ICMPv6."; + reference + "RFC 792: Internet Control Message Protocol + RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-routing-types@2017-12-04.yang new file mode 100644 index 000000000..695d9eaeb --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-routing-types@2017-12-04.yang @@ -0,0 +1,774 @@ + module ietf-routing-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; + prefix rt-types; + + import ietf-yang-types { + prefix yang; + } + import ietf-inet-types { + prefix inet; + } + + organization + "IETF RTGWG - Routing Area Working Group"; + contact + "WG Web: + WG List: + + Editors: Xufeng Liu + + Yingzhen Qu + + Acee Lindem + + Christian Hopps + + Lou Berger + "; + + description + "This module contains a collection of YANG data types + considered generally useful for routing protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 3."; + } + + /*** Identities related to MPLS/GMPLS ***/ + + identity mpls-label-special-purpose-value { + description + "Base identity for deriving identities describing + special-purpose Multiprotocol Label Switching (MPLS) label + values."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + identity ipv4-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv4 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity router-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Router Alert Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity ipv6-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv6 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity implicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Implicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity entropy-label-indicator { + base mpls-label-special-purpose-value; + description + "This identity represents the Entropy Label Indicator."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. + Sections 3 and 10.1."; + } + + identity gal-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Generic Associated Channel + (G-ACh) Label (GAL)."; + reference + "RFC 5586: MPLS Generic Associated Channel. + Sections 4 and 10."; + } + + identity oam-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the OAM Alert Label."; + reference + "RFC 3429: Assignment of the 'OAM Alert Label' for + Multiprotocol Label Switching Architecture (MPLS) + Operation and Maintenance (OAM) Functions. + Sections 3 and 6."; + } + + identity extension-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Extension Label."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels. Sections 3.1 and 5."; + } + + /*** Collection of types related to routing ***/ + + typedef router-id { + type yang:dotted-quad; + description + "A 32-bit number in the dotted-quad format assigned to each + router. This number uniquely identifies the router within + an Autonomous System."; + } + + /*** Collection of types related to VPNs ***/ + + typedef route-target { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Target is an 8-octet BGP extended community + initially identifying a set of sites in a BGP VPN + (RFC 4364). However, it has since taken on a more general + role in BGP route filtering. A Route Target consists of two + or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + Route Target types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-target { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Target is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet Route Target, except that it only + allows an IPv6 address as the global administrator. + The format is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + typedef route-target-type { + type enumeration { + enum import { + value 0; + description + "The Route Target applies to route import."; + } + enum export { + value 1; + description + "The Route Target applies to route export."; + } + + enum both { + value 2; + description + "The Route Target applies to both route import and + route export."; + } + } + description + "Indicates the role a Route Target takes in route filtering."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; + } + + typedef route-distinguisher { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Distinguisher is an 8-octet value used to + distinguish routes from different BGP VPNs (RFC 4364). + A Route Distinguisher will have the same format as a + Route Target as per RFC 4360 and will consist of + two or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + route discriminator types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef route-origin { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + description + "A Route Origin is an 8-octet BGP extended community + identifying the set of sites where the BGP route + originated (RFC 4364). A Route Origin will have the same + format as a Route Target as per RFC 4360 and will consist + of two or three fields: a 2-octet Type field, an + administrator field, and, optionally, an assigned number + field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + Route Origin types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-origin { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Origin is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet route, except that it only allows + an IPv6 address as the global administrator. The format + is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + /*** Collection of types common to multicast ***/ + + typedef ipv4-multicast-group-address { + type inet:ipv4-address { + pattern '(2((2[4-9])|(3[0-9]))\.).*'; + } + description + "This type represents an IPv4 multicast group address, + which is in the range of 224.0.0.0 to 239.255.255.255."; + reference + "RFC 1112: Host Extensions for IP Multicasting."; + } + + typedef ipv6-multicast-group-address { + type inet:ipv6-address { + pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; + } + description + "This type represents an IPv6 multicast group address, + which is in the range of ff00::/8."; + reference + "RFC 4291: IP Version 6 Addressing Architecture. Section 2.7. + RFC 7346: IPv6 Multicast Address Scopes."; + } + + typedef ip-multicast-group-address { + type union { + type ipv4-multicast-group-address; + type ipv6-multicast-group-address; + } + description + "This type represents a version-neutral IP multicast group + address. The format of the textual representation implies + the IP version."; + } + + typedef ipv4-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv4-address; + } + description + "Multicast source IPv4 address type."; + } + + typedef ipv6-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv6-address; + } + description + "Multicast source IPv6 address type."; + } + + /*** Collection of types common to protocols ***/ + + typedef bandwidth-ieee-float32 { + type string { + pattern + '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' + + '1[01][0-9]|0?[0-9]?[0-9])?)'; + } + description + "Bandwidth in IEEE 754 floating-point 32-bit binary format: + (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), + where Exponent uses 8 bits and Fraction uses 23 bits. + The units are octets per second. + The encoding format is the external hexadecimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99. + The format is restricted to be normalized, non-negative, and + non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, + where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are + integers in the range of [0..127]. + + When six hexadecimal digits are used for 'hhhhhh' or + 'HHHHHH', the least significant digit must be an even + number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' + indicate a power of two. Some examples are 0x0p0, 0x1p10, + and 0x1.abcde2p+20."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + typedef link-access-type { + type enumeration { + enum broadcast { + description + "Specify broadcast multi-access network."; + } + enum non-broadcast-multiaccess { + description + "Specify Non-Broadcast Multi-Access (NBMA) network."; + } + enum point-to-multipoint { + description + "Specify point-to-multipoint network."; + } + enum point-to-point { + description + "Specify point-to-point network."; + } + } + description + "Link access type."; + } + + typedef timer-multiplier { + type uint8; + description + "The number of timer value intervals that should be + interpreted as a failure."; + } + + typedef timer-value-seconds16 { + type union { + type uint16 { + range "1..65535"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (16-bit range)."; + } + + typedef timer-value-seconds32 { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (32-bit range)."; + } + + typedef timer-value-milliseconds { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "milliseconds"; + description + "Timer value type, in milliseconds."; + } + + typedef percentage { + type uint8 { + range "0..100"; + } + description + "Integer indicating a percentage value."; + } + + typedef timeticks64 { + type uint64; + description + "This type is based on the timeticks type defined in + RFC 6991, but with 64-bit width. It represents the time, + modulo 2^64, in hundredths of a second between two epochs."; + reference + "RFC 6991: Common YANG Data Types."; + } + + typedef uint24 { + type uint32 { + range "0..16777215"; + } + description + "24-bit unsigned integer."; + } + + /*** Collection of types related to MPLS/GMPLS ***/ + + typedef generalized-label { + type binary; + description + "Generalized Label. Nodes sending and receiving the + Generalized Label are aware of the link-specific + label context and type."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description. Section 3.2."; + } + + typedef mpls-label-special-purpose { + type identityref { + base mpls-label-special-purpose-value; + } + description + "This type represents the special-purpose MPLS label values."; + reference + "RFC 3032: MPLS Label Stack Encoding. + RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + typedef mpls-label-general-use { + type uint32 { + range "16..1048575"; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL (Time to Live). + The label range specified by this type is for general use, + with special-purpose MPLS label values excluded."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + typedef mpls-label { + type union { + type mpls-label-special-purpose; + type mpls-label-general-use; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + /*** Groupings **/ + + grouping mpls-label-stack { + description + "This grouping specifies an MPLS label stack. The label + stack is encoded as a list of label stack entries. The + list key is an identifier that indicates the relative + ordering of each entry, with the lowest-value identifier + corresponding to the top of the label stack."; + container mpls-label-stack { + description + "Container for a list of MPLS label stack entries."; + list entry { + key "id"; + description + "List of MPLS label stack entries."; + leaf id { + type uint8; + description + "Identifies the entry in a sequence of MPLS label + stack entries. An entry with a smaller identifier + value precedes an entry with a larger identifier + value in the label stack. The value of this ID has + no semantic meaning other than relative ordering + and referencing the entry."; + } + leaf label { + type rt-types:mpls-label; + description + "Label value."; + } + + leaf ttl { + type uint8; + description + "Time to Live (TTL)."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + leaf traffic-class { + type uint8 { + range "0..7"; + } + description + "Traffic Class (TC)."; + reference + "RFC 5462: Multiprotocol Label Switching (MPLS) Label + Stack Entry: 'EXP' Field Renamed to 'Traffic Class' + Field."; + } + } + } + } + + grouping vpn-route-targets { + description + "A grouping that specifies Route Target import-export rules + used in BGP-enabled VPNs."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 4664: Framework for Layer 2 Virtual Private Networks + (L2VPNs)."; + list vpn-target { + key "route-target"; + description + "List of Route Targets."; + leaf route-target { + type rt-types:route-target; + description + "Route Target value."; + } + leaf route-target-type { + type rt-types:route-target-type; + mandatory true; + description + "Import/export type of the Route Target."; + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-sap-ntw@2023-06-20.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-sap-ntw@2023-06-20.yang new file mode 100644 index 000000000..a78e55c4c --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-sap-ntw@2023-06-20.yang @@ -0,0 +1,350 @@ +module ietf-sap-ntw { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-sap-ntw"; + prefix sap; + + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network + Topologies, Section 6.2"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network + Topologies, Section 6.1"; + } + import ietf-vpn-common { + prefix vpn-common; + reference + "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 + VPNs"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types, Section 3"; + } + + organization + "IETF OPSA (Operations and Management Area) Working Group"; + contact + "WG Web: + WG List: + + Editor: Mohamed Boucadair + + + Author: Oscar Gonzalez de Dios + + + Author: Samier Barguil + + + Author: Qin Wu + + + Author: Victor Lopez + "; + description + "This YANG module defines a model for representing, managing, + and controlling the Service Attachment Points (SAPs) in the + network topology. + + Copyright (c) 2023 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9408; see the + RFC itself for full legal notices."; + + revision 2023-06-20 { + description + "Initial version."; + reference + "RFC 9408: A YANG Network Data Model for Service Attachment + Points (SAPs)"; + } + + identity virtual-network { + base vpn-common:service-type; + description + "Virtual network. Refers to a logical network instance + that is built over a physical network."; + reference + "RFC 8453: Framework for Abstraction and Control of TE + Networks (ACTN)"; + } + + identity enhanced-vpn { + base vpn-common:service-type; + description + "Enhanced VPN (VPN+). VPN+ is an approach that is + based on existing VPN and Traffic Engineering (TE) + technologies but adds characteristics that specific + services require over and above conventional VPNs."; + reference + "draft-ietf-teas-enhanced-vpn: + A Framework for Enhanced Virtual Private Network + (VPN+)"; + } + + identity network-slice { + base vpn-common:service-type; + description + "IETF Network Slice. An IETF Network Slice + is a logical network topology connecting a number of + endpoints using a set of shared or dedicated network + resources that are used to satisfy specific service + objectives."; + reference + "draft-ietf-teas-ietf-network-slices: + A Framework for IETF Network Slices"; + } + + identity sdwan { + base vpn-common:service-type; + description + "PE-based Software-Defined Wide-Area Network (SD-WAN)."; + reference + "draft-ietf-bess-bgp-sdwan-usage: + BGP Usage for SD-WAN Overlay Networks"; + } + + identity basic-connectivity { + base vpn-common:service-type; + description + "Basic IP connectivity. This is, for example, a plain + form of connectivity offered to enterprises over a + dedicated or shared MPLS infrastructure."; + } + + identity interface-role { + description + "Base identity for the network role of an interface."; + } + + identity uni { + base interface-role; + description + "User-to-Network Interface (UNI)."; + } + + identity nni { + base interface-role; + description + "Network-to-Network Interface (NNI)."; + } + + identity interface-type { + description + "Base identity for the interface type."; + } + + identity phy { + base interface-type; + description + "Physical port."; + } + + identity loopback { + base interface-type; + description + "Loopback interface."; + } + + identity lag { + base interface-type; + description + "Link Aggregation Group (LAG) interface."; + } + + identity irb { + base interface-type; + description + "Integrated Routing and Bridging (IRB) interface. An IRB + interface typically connects an IP Virtual Routing and + Forwarding (IP-VRF) entity to a bridge domain."; + } + + identity local-bridge { + base interface-type; + description + "A local bridge reference to accommodate (for example) + implementations that require internal bridging. + When such a type is used, a reference to a local + bridge domain is used to identify the interface."; + } + + identity logical { + base interface-type; + description + "Refers to a logical sub-interface that is typically + used to bind a service. This type is used only + if none of the other more specific types (i.e., + 'loopback', 'lag', 'irb', or 'local-bridge') can be used."; + } + + grouping sap-entry { + description + "Service Attachment Point (SAP) entry information."; + leaf sap-id { + type string; + description + "Indicates an identifier that uniquely identifies + a SAP."; + } + leaf description { + type string; + description + "A textual description of the SAP."; + } + leaf parent-termination-point { + type nt:tp-id; + description + "Indicates the parent termination point to + which the SAP is attached. A termination + point can be a physical port, an interface, etc."; + } + leaf attachment-interface { + type string; + description + "Indicates the interface to which the SAP is bound."; + } + leaf interface-type { + type identityref { + base interface-type; + } + description + "The type of the interface to which the SAP is bound."; + } + leaf encapsulation-type { + type identityref { + base vpn-common:encapsulation-type; + } + description + "Encapsulation type of the interface to which the + SAP is bound."; + } + leaf role { + type identityref { + base interface-role; + } + description + "Indicates the role of a SAP."; + } + leaf allows-child-saps { + type boolean; + description + "Indicates whether the attachment interface of this + SAP is capable of hosting per-service sub-interfaces."; + } + leaf-list peer-sap-id { + type string; + description + "Indicates an identifier of the peer's termination + identifier (e.g., a Customer Edge (CE)). This + information can be used for correlation purposes, + such as identifying the SAP that is attached to + an endpoint that is provided in a service request."; + } + } + + grouping sap-list { + description + "SAP information."; + list sap { + key "sap-id"; + description + "The SAPs are an abstraction of the points to which + network services such as L3VPNs, L2VPNs, or network + slices can be attached."; + uses sap-entry; + container sap-status { + config false; + description + "Indicates the operational status of the SAP, + independent of any service provisioned over it."; + + uses vpn-common:oper-status-timestamp; + } + container service-status { + description + "Indicates the service status."; + container admin-status { + description + "Administrative service status."; + leaf status { + type identityref { + base vpn-common:administrative-status; + } + description + "Administrative status of the service provisioned + at the SAP."; + } + leaf last-change { + type yang:date-and-time; + description + "Indicates the actual date and time of the service + status change."; + } + } + container oper-status { + config false; + description + "Operational status of the service provisioned + at the SAP."; + uses vpn-common:oper-status-timestamp; + } + } + } + } + + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces a new network type for a SAP network."; + container sap-network { + presence "Indicates the SAP network type."; + description + "The presence of the container node indicates the + SAP network type."; + leaf-list service-type { + type identityref { + base vpn-common:service-type; + } + description + "Indicates the set of supported service types."; + } + } + } + + augment "/nw:networks/nw:network/nw:node" { + when '../nw:network-types/sap:sap-network' { + description + "Augmentation parameters apply only for SAP + networks."; + } + description + "SAP parameters for the node level."; + list service { + key "service-type"; + description + "A list of supported service types for the node."; + leaf service-type { + type identityref { + base vpn-common:service-type; + } + description + "Indicates a service type."; + } + uses sap-list; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-packet-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-packet-types@2020-06-10.yang new file mode 100644 index 000000000..8e7d4aafa --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-packet-types@2020-06-10.yang @@ -0,0 +1,475 @@ +module ietf-te-packet-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types"; + prefix te-packet-types; + + /* Import TE generic types */ + + import ietf-te-types { + prefix te-types; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful YANG + data type definitions specific to MPLS TE. The model fully + conforms to the Network Management Datastore Architecture + (NMDA). + + Copyright (c) 2020 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8776; see the + RFC itself for full legal notices."; + + revision 2020-06-10 { + description + "Latest revision of TE MPLS types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /** + * Typedefs + */ + + typedef te-bandwidth-requested-type { + type enumeration { + enum specified { + description + "Bandwidth is explicitly specified."; + } + enum auto { + description + "Bandwidth is automatically computed."; + } + } + description + "Enumerated type for specifying whether bandwidth is + explicitly specified or automatically computed."; + } + + typedef te-class-type { + type uint8; + description + "Diffserv-TE Class-Type. Defines a set of Traffic Trunks + crossing a link that is governed by a specific set of + bandwidth constraints. Class-Type is used for the purposes + of link bandwidth allocation, constraint-based routing, and + admission control."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bc-type { + type uint8 { + range "0..7"; + } + description + "Diffserv-TE bandwidth constraints as defined in RFC 4124."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bandwidth-kbps { + type uint64; + units "Kbps"; + description + "Bandwidth values, expressed in kilobits per second."; + } + + typedef bandwidth-mbps { + type uint64; + units "Mbps"; + description + "Bandwidth values, expressed in megabits per second."; + } + + typedef bandwidth-gbps { + type uint64; + units "Gbps"; + description + "Bandwidth values, expressed in gigabits per second."; + } + + identity backup-protection-type { + description + "Base identity for the backup protection type."; + } + + identity backup-protection-link { + base backup-protection-type; + description + "Backup provides link protection only."; + } + + identity backup-protection-node-link { + base backup-protection-type; + description + "Backup offers node (preferred) or link protection."; + } + + identity bc-model-type { + description + "Base identity for the Diffserv-TE Bandwidth Constraints + Model type."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + identity bc-model-rdm { + base bc-model-type; + description + "Russian Dolls Bandwidth Constraints Model type."; + reference + "RFC 4127: Russian Dolls Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mam { + base bc-model-type; + description + "Maximum Allocation Bandwidth Constraints Model type."; + reference + "RFC 4125: Maximum Allocation Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mar { + base bc-model-type; + description + "Maximum Allocation with Reservation Bandwidth Constraints + Model type."; + reference + "RFC 4126: Max Allocation with Reservation Bandwidth + Constraints Model for Diffserv-aware MPLS Traffic Engineering + & Performance Comparisons"; + } + + grouping performance-metrics-attributes-packet { + description + "Contains PM attributes."; + uses te-types:performance-metrics-attributes { + augment "performance-metrics-one-way" { + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + description + "One-way minimum delay or latency in microseconds."; + } + leaf one-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way minimum delay or latency normality."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + description + "One-way maximum delay or latency in microseconds."; + } + leaf one-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way maximum delay or latency normality."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + description + "One-way delay variation in microseconds."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf one-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. The finest precision + is 0.000003%, where the maximum is 50.331642%."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.4"; + } + leaf one-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Packet loss normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + description + "PM one-way packet-specific augmentation for a generic PM + grouping."; + } + augment "performance-metrics-two-way" { + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way minimum delay or latency in microseconds."; + } + leaf two-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way minimum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way maximum delay or latency in microseconds."; + } + leaf two-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way maximum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way delay variation in microseconds."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf two-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. The finest precision + is 0.000003%."; + } + leaf two-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way packet loss normality."; + } + description + "PM two-way packet-specific augmentation for a generic PM + grouping."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) Using + TE Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions"; + } + } + } + + grouping one-way-performance-metrics-packet { + description + "One-way packet PM throttle grouping."; + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "One-way minimum delay or latency in microseconds."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "One-way maximum delay or latency in microseconds."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "One-way delay variation in microseconds."; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + default "0"; + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. The finest precision is + 0.000003%."; + } + } + + grouping two-way-performance-metrics-packet { + description + "Two-way packet PM throttle grouping."; + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way minimum delay or latency in microseconds."; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way maximum delay or latency in microseconds."; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way delay variation in microseconds."; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. The finest precision is + 0.000003%."; + } + } + + grouping performance-metrics-throttle-container-packet { + description + "Packet PM threshold grouping."; + uses te-types:performance-metrics-throttle-container { + augment "throttle/threshold-out" { + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + description + "PM threshold-out packet augmentation for a + generic grouping."; + } + augment "throttle/threshold-in" { + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + description + "PM threshold-in packet augmentation for a + generic grouping."; + } + augment "throttle/threshold-accelerated-advertisement" { + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + description + "PM accelerated advertisement packet augmentation for a + generic grouping."; + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-topology@2020-08-06.yang new file mode 100644 index 000000000..6d76a77b2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-topology@2020-08-06.yang @@ -0,0 +1,1952 @@ +module ietf-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; + prefix tet; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez de Dios + "; + description + "This YANG module defines a TE topology model for representing, + retrieving, and manipulating technology-agnostic TE topologies. + + Copyright (c) 2020 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8795; see the + RFC itself for full legal notices."; + + revision 2020-08-06 { + description + "Initial revision."; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + /* + * Features + */ + + feature nsrlg { + description + "This feature indicates that the system supports NSRLGs + (Non-Shared Risk Link Groups)."; + } + + feature te-topology-hierarchy { + description + "This feature indicates that the system allows an underlay + and/or overlay TE topology hierarchy."; + } + + feature template { + description + "This feature indicates that the system supports + template configuration."; + } + + /* + * Typedefs + */ + + typedef geographic-coordinate-degree { + type decimal64 { + fraction-digits 8; + } + description + "Decimal degree (DD) used to express latitude and longitude + geographic coordinates."; + } + // geographic-coordinate-degree + + typedef te-info-source { + type enumeration { + enum unknown { + description + "The source is unknown."; + } + enum locally-configured { + description + "Configured entity."; + } + enum ospfv2 { + description + "OSPFv2."; + } + enum ospfv3 { + description + "OSPFv3."; + } + enum isis { + description + "IS-IS."; + } + enum bgp-ls { + description + "BGP-LS."; + reference + "RFC 7752: North-Bound Distribution of Link-State and + Traffic Engineering (TE) Information Using BGP"; + } + enum system-processed { + description + "System-processed entity."; + } + enum other { + description + "Other source."; + } + } + description + "Describes the type of source that has provided the + related information, and the source's credibility."; + } + // te-info-source + + /* + * Groupings + */ + + grouping connectivity-matrix-entry-path-attributes { + description + "Attributes of a connectivity matrix entry."; + leaf is-allowed { + type boolean; + description + "'true' - switching is allowed; + 'false' - switching is disallowed."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + uses te-types:generic-path-constraints; + uses te-types:generic-path-optimization; + uses te-types:generic-path-properties; + } + // connectivity-matrix-entry-path-attributes + + grouping geolocation-container { + description + "Contains a GPS location."; + container geolocation { + config false; + description + "Contains a GPS location."; + leaf altitude { + type int64; + units "millimeters"; + description + "Distance above sea level."; + } + leaf latitude { + type geographic-coordinate-degree { + range "-90..90"; + } + description + "Relative position north or south on the Earth's surface."; + } + leaf longitude { + type geographic-coordinate-degree { + range "-180..180"; + } + description + "Angular distance east or west on the Earth's surface."; + } + } + // geolocation + } + // geolocation-container + + grouping information-source-state-attributes { + description + "The attributes identifying the source that has provided the + related information, and the source's credibility."; + leaf credibility-preference { + type uint16; + description + "The preference value for calculating the Traffic + Engineering database credibility value used for + tie-break selection between different information-source + values. A higher value is preferable."; + } + leaf logical-network-element { + type string; + description + "When applicable, this is the name of a logical network + element from which the information is learned."; + } + leaf network-instance { + type string; + description + "When applicable, this is the name of a network instance + from which the information is learned."; + } + } + // information-source-state-attributes + + grouping information-source-per-link-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nt:link-ref; + } + } + } + // information-source-per-link-attributes + + grouping information-source-per-node-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nw:node-ref; + } + } + } + // information-source-per-node-attributes + + grouping interface-switching-capability-list { + description + "List of Interface Switching Capability Descriptors (ISCDs)."; + list interface-switching-capability { + key "switching-capability encoding"; + description + "List of ISCDs for this link."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description + RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + uses te-link-iscd-attributes; + } + // interface-switching-capability + } + // interface-switching-capability-list + + grouping statistics-per-link { + description + "Statistics attributes per TE link."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a link was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a link was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a link was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a link was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a link was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'up'."; + } + /* Recovery attributes */ + leaf fault-clears { + type yang:counter32; + description + "Number of times that a link experienced a fault-clear + event."; + } + leaf fault-detects { + type yang:counter32; + description + "Number of times that a link experienced fault detection."; + } + leaf protection-switches { + type yang:counter32; + description + "Number of times that a link experienced protection + switchover."; + } + leaf protection-reverts { + type yang:counter32; + description + "Number of times that a link experienced protection + reversion."; + } + leaf restoration-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + failure."; + } + leaf restoration-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + start."; + } + leaf restoration-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + success."; + } + leaf restoration-reversion-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion failure."; + } + leaf restoration-reversion-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion start."; + } + leaf restoration-reversion-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion success."; + } + } + // statistics-per-link + + grouping statistics-per-node { + description + "Statistics attributes per TE node."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container node { + description + "Contains statistics attributes at the TE node level."; + leaf disables { + type yang:counter32; + description + "Number of times that a node was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a node was enabled."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a node was put in maintenance."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a node was taken out of + maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a node was modified."; + } + } + // node + container connectivity-matrix-entry { + description + "Contains statistics attributes at the level of a + connectivity matrix entry."; + leaf creates { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + modified."; + } + } + // connectivity-matrix-entry + } + // statistics-per-node + + grouping statistics-per-ttp { + description + "Statistics attributes per TE TTP (Tunnel Termination Point)."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container tunnel-termination-point { + description + "Contains statistics attributes at the TE TTP level."; + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a TTP was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a TTP was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a TTP was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a TTP was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'up'."; + } + leaf in-service-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of service + (TE tunnel was released)."; + } + leaf in-service-sets { + type yang:counter32; + description + "Number of times that a TTP was put in service by a TE + tunnel (TE tunnel was set up)."; + } + } + // tunnel-termination-point + container local-link-connectivity { + description + "Contains statistics attributes at the TE LLCL (Local Link + Connectivity List) level."; + leaf creates { + type yang:counter32; + description + "Number of times that an LLCL entry was created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that an LLCL entry was deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that an LLCL entry was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that an LLCL entry was enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that an LLCL entry was modified."; + } + } + // local-link-connectivity + } + // statistics-per-ttp + + grouping te-link-augment { + description + "Augmentation for a TE link."; + uses te-link-config; + uses te-link-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-link; + } + } + // te-link-augment + + grouping te-link-config { + description + "TE link configuration grouping."; + choice bundle-stack-level { + description + "The TE link can be partitioned into bundled links or + component links."; + case bundle { + container bundled-links { + description + "A set of bundled links."; + reference + "RFC 4201: Link Bundling in MPLS Traffic + Engineering (TE)"; + list bundled-link { + key "sequence"; + description + "Specifies a bundled interface that is + further partitioned."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + } + } + } + case component { + container component-links { + description + "A set of component links."; + list component-link { + key "sequence"; + description + "Specifies a component interface that is + sufficient to unambiguously identify the + appropriate resources."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + leaf src-interface-ref { + type string; + description + "Reference to a component link interface on the + source node."; + } + leaf des-interface-ref { + type string; + description + "Reference to a component link interface on the + destination node."; + } + } + } + } + } + // bundle-stack-level + leaf-list te-link-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/link-template/name"; + } + description + "The reference to a TE link template."; + } + uses te-link-config-attributes; + } + // te-link-config + + grouping te-link-config-attributes { + description + "Link configuration attributes in a TE topology."; + container te-link-attributes { + description + "Link attributes in a TE topology."; + leaf access-type { + type te-types:te-link-access-type; + description + "Link access type, which can be point-to-point or + multi-access."; + } + container external-domain { + description + "For an inter-domain link, specifies the attributes of + the remote end of the link, to facilitate the signaling at + the local end."; + uses nw:network-ref; + leaf remote-te-node-id { + type te-types:te-node-id; + description + "Remote TE node identifier, used together with + 'remote-te-link-tp-id' to identify the remote Link + Termination Point (LTP) in a different domain."; + } + leaf remote-te-link-tp-id { + type te-types:te-tp-id; + description + "Remote TE LTP identifier, used together with + 'remote-te-node-id' to identify the remote LTP in a + different domain."; + } + } + leaf is-abstract { + type empty; + description + "Present if the link is abstract."; + } + leaf name { + type string; + description + "Link name."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-link-info-attributes; + } + // te-link-attributes + } + // te-link-config-attributes + + grouping te-link-info-attributes { + description + "Advertised TE information attributes."; + leaf link-index { + type uint64; + description + "The link identifier. If OSPF is used, this object + represents an ospfLsdbID. If IS-IS is used, this object + represents an isisLSPID. If a locally configured link is + used, this object represents a unique value, which is + locally defined in a router."; + } + leaf administrative-group { + type te-types:admin-groups; + description + "Administrative group or color of the link. + This attribute covers both administrative groups (defined + in RFCs 3630 and 5305) and Extended Administrative Groups + (defined in RFC 7308)."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + uses interface-switching-capability-list; + uses te-types:label-set-info; + leaf link-protection-type { + type identityref { + base te-types:link-protection-type; + } + description + "Link Protection Type desired for this link."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + container max-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum bandwidth that can be seen on this link in this + direction. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + container max-resv-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum amount of bandwidth that can be reserved in this + direction in this link. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + list unreserved-bandwidth { + key "priority"; + max-elements 8; + description + "Unreserved bandwidth for priority levels 0-7. Units are in + bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + leaf te-default-metric { + type uint32; + description + "Traffic Engineering metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + leaf te-delay-metric { + type uint32; + description + "Traffic Engineering delay metric."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + leaf te-igp-metric { + type uint32; + description + "IGP metric used for Traffic Engineering."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + container te-srlgs { + description + "Contains a list of SRLGs."; + leaf-list value { + type te-types:srlg; + description + "SRLG value."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + } + container te-nsrlgs { + if-feature "nsrlg"; + description + "Contains a list of NSRLGs (Non-Shared Risk Link Groups). + When an abstract TE link is configured, this list specifies + the request that underlay TE paths need to be mutually + disjoint with other TE links in the same groups."; + leaf-list id { + type uint32; + description + "NSRLG ID, uniquely configured within a topology."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + } + } + // te-link-info-attributes + + grouping te-link-iscd-attributes { + description + "TE link ISCD attributes."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), Section 1.4"; + list max-lsp-bandwidth { + key "priority"; + max-elements 8; + description + "Maximum Label Switched Path (LSP) bandwidth at + priorities 0-7."; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + } + // te-link-iscd-attributes + + grouping te-link-state-derived { + description + "Link state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the link."; + } + leaf is-transitional { + type empty; + config false; + description + "Present if the link is transitional; used as an + alternative approach in lieu of 'inter-layer-lock-id' + for path computation in a TE topology covering multiple + layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + uses information-source-per-link-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-link-attributes; + uses te-link-info-attributes; + } + container recovery { + config false; + description + "Status of the recovery process."; + leaf restoration-status { + type te-types:te-recovery-status; + description + "Restoration status."; + } + leaf protection-status { + type te-types:te-recovery-status; + description + "Protection status."; + } + } + container underlay { + if-feature "te-topology-hierarchy"; + config false; + description + "State attributes for the TE link underlay."; + leaf dynamic { + type boolean; + description + "'true' if the underlay is dynamically created."; + } + leaf committed { + type boolean; + description + "'true' if the underlay is committed."; + } + } + } + // te-link-state-derived + + grouping te-link-underlay-attributes { + description + "Attributes for the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + leaf enabled { + type boolean; + description + "'true' if the underlay is enabled. + 'false' if the underlay is disabled."; + } + container primary-path { + description + "The service path on the underlay topology that + supports this link."; + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the service path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // primary-path + list backup-path { + key "index"; + description + "A list of backup service paths on the underlay topology that + protect the underlay primary path. If the primary path is + not protected, the list contains zero elements. If the + primary path is protected, the list contains one or more + elements."; + leaf index { + type uint32; + description + "A sequence number to identify a backup path."; + } + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the backup service + path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // backup-path + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "Underlay protection type desired for this link."; + } + container tunnel-termination-points { + description + "Underlay TTPs desired for this link."; + leaf source { + type binary; + description + "Source TTP identifier."; + } + leaf destination { + type binary; + description + "Destination TTP identifier."; + } + } + container tunnels { + description + "Underlay TE tunnels supporting this TE link."; + leaf sharing { + type boolean; + default "true"; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link. + This leaf is the default option for all TE tunnels + and may be overridden by the per-TE-tunnel value."; + } + list tunnel { + key "tunnel-name"; + description + "Zero, one, or more underlay TE tunnels that support this + TE link."; + leaf tunnel-name { + type string; + description + "A tunnel name uniquely identifies an underlay TE tunnel, + used together with the 'source-node' value for this + link."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf sharing { + type boolean; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link."; + } + } + // tunnel + } + // tunnels + } + // te-link-underlay-attributes + + grouping te-node-augment { + description + "Augmentation for a TE node."; + uses te-node-config; + uses te-node-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-node; + } + list tunnel-termination-point { + key "tunnel-tp-id"; + description + "A termination point can terminate a tunnel."; + leaf tunnel-tp-id { + type binary; + description + "TTP identifier."; + } + uses te-node-tunnel-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the TTP."; + } + uses geolocation-container; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-ttp; + } + // Relationship to other TTPs + list supporting-tunnel-termination-point { + key "node-ref tunnel-tp-ref"; + description + "Identifies the TTPs on which this TTP depends."; + leaf node-ref { + type inet:uri; + description + "This leaf identifies the node in which the supporting + TTP is present. + This node is either the supporting node or a node in + an underlay topology."; + } + leaf tunnel-tp-ref { + type binary; + description + "Reference to a TTP that is in either the supporting node + or a node in an underlay topology."; + } + } + // supporting-tunnel-termination-point + } + // tunnel-termination-point + } + // te-node-augment + + grouping te-node-config { + description + "TE node configuration grouping."; + leaf-list te-node-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/node-template/name"; + } + description + "The reference to a TE node template."; + } + uses te-node-config-attributes; + } + // te-node-config + + grouping te-node-config-attributes { + description + "Configuration node attributes in a TE topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-config-attributes + + grouping te-node-config-attributes-template { + description + "Configuration node attributes for a template in a TE + topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-info-attributes; + } + } + // te-node-config-attributes-template + + grouping te-node-connectivity-matrices { + description + "Connectivity matrix on a TE node."; + container connectivity-matrices { + description + "Contains a connectivity matrix on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of connectivity matrix entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + list connectivity-matrix { + key "id"; + description + "Represents a node's switching limitations, i.e., + limitations in the interconnecting network TE links + across the node."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + leaf id { + type uint32; + description + "Identifies the connectivity matrix entry."; + } + } + // connectivity-matrix + } + // connectivity-matrices + } + // te-node-connectivity-matrices + + grouping te-node-connectivity-matrix-attributes { + description + "Termination point references of a connectivity matrix entry."; + container from { + description + "Reference to a source LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + container to { + description + "Reference to a destination LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + uses connectivity-matrix-entry-path-attributes; + } + // te-node-connectivity-matrix-attributes + + grouping te-node-info-attributes { + description + "Advertised TE information attributes."; + leaf domain-id { + type uint32; + description + "Identifies the domain to which this node belongs. + This attribute is used to support inter-domain links."; + reference + "RFC 5152: A Per-Domain Path Computation Method for + Establishing Inter-Domain Traffic Engineering (TE) + Label Switched Paths (LSPs) + RFC 5316: ISIS Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering + RFC 5392: OSPF Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering"; + } + leaf is-abstract { + type empty; + description + "Present if the node is abstract; not present if the node + is actual."; + } + leaf name { + type string; + description + "Node name."; + } + leaf-list signaling-address { + type inet:ip-address; + description + "The node's signaling address."; + } + container underlay-topology { + if-feature "te-topology-hierarchy"; + description + "When an abstract node encapsulates a topology, the + attributes in this container point to said topology."; + uses nw:network-ref; + } + } + // te-node-info-attributes + + grouping te-node-state-derived { + description + "Node state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the node."; + } + uses geolocation-container; + leaf is-multi-access-dr { + type empty; + config false; + description + "The presence of this attribute indicates that this TE node + is a pseudonode elected as a designated router."; + reference + "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual + Environments + RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + uses information-source-per-node-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-node-attributes; + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-state-derived + + grouping te-node-tunnel-termination-point-config { + description + "Termination capability of a TTP on a TE node."; + uses te-node-tunnel-termination-point-config-attributes; + container local-link-connectivities { + description + "Contains an LLCL for a TTP on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of LLCL entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-config + + grouping te-node-tunnel-termination-point-config-attributes { + description + "Configuration attributes of a TTP on a TE node."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the TTP."; + } + leaf name { + type string; + description + "A descriptive name for the TTP."; + } + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "The protection type that this TTP is capable of."; + } + container client-layer-adaptation { + description + "Contains capability information to support a client-layer + adaptation in a multi-layer topology."; + list switching-capability { + key "switching-capability encoding"; + description + "List of supported switching capabilities."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for the client-layer adaptation."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by the client-layer adaptation."; + } + uses te-types:te-bandwidth; + } + } + } + // te-node-tunnel-termination-point-config-attributes + + grouping te-node-tunnel-termination-point-llc-list { + description + "LLCL of a TTP on a TE node."; + list local-link-connectivity { + key "link-tp-ref"; + description + "The termination capabilities between the TTP and the LTP. + This capability information can be used to compute + the tunnel path. + The Interface Adjustment Capability Descriptors (IACDs) + (defined in RFC 6001) on each LTP can be derived from + this list."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf link-tp-ref { + type leafref { + path "../../../../../nt:termination-point/nt:tp-id"; + } + description + "LTP."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-llc-list + + grouping te-path-element { + description + "A group of attributes defining an element in a TE path, + such as a TE node, TE link, TE atomic resource, or label."; + uses te-types:explicit-route-hop; + } + // te-path-element + + grouping te-termination-point-augment { + description + "Augmentation for a TE termination point."; + leaf te-tp-id { + type te-types:te-tp-id; + description + "An identifier that uniquely identifies a TE termination + point."; + } + container te { + must '../te-tp-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the LTP."; + } + uses geolocation-container; + } + } + // te-termination-point-augment + + grouping te-termination-point-config { + description + "TE termination point configuration grouping."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the LTP."; + } + leaf name { + type string; + description + "A descriptive name for the LTP."; + } + uses interface-switching-capability-list; + leaf inter-domain-plug-id { + type binary; + description + "A network-wide unique number that identifies on the + network a connection that supports a given inter-domain + TE link. This is a more flexible alternative to specifying + 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link + when the provider either does not know 'remote-te-node-id' + and 'remote-te-link-tp-id' or needs to give the client the + flexibility to mix and match multiple topologies."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + } + // te-termination-point-config + + grouping te-topologies-augment { + description + "Augmentation for TE topologies."; + container te { + presence "TE support"; + description + "Indicates TE support."; + container templates { + description + "Configuration parameters for templates used for a TE + topology."; + list node-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE node template."; + } + description + "The list of TE node templates used to define sharable + and reusable TE node attributes."; + uses template-attributes; + uses te-node-config-attributes-template; + } + // node-template + list link-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE link template."; + } + description + "The list of TE link templates used to define sharable + and reusable TE link attributes."; + uses template-attributes; + uses te-link-config-attributes; + } + // link-template + } + // templates + } + // te + } + // te-topologies-augment + + grouping te-topology-augment { + description + "Augmentation for a TE topology."; + uses te-types:te-topology-identifier; + container te { + must '../te-topology-identifier/provider-id' + + ' and ../te-topology-identifier/client-id' + + ' and ../te-topology-identifier/topology-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-topology-config; + uses geolocation-container; + } + } + // te-topology-augment + + grouping te-topology-config { + description + "TE topology configuration grouping."; + leaf name { + type string; + description + "Name of the TE topology. This attribute is optional and can + be specified by the operator to describe the TE topology, + which can be useful when 'network-id' (RFC 8345) is not + descriptive and not modifiable because of being generated + by the system."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this topology. A lower number + indicates a higher preference."; + } + leaf optimization-criterion { + type identityref { + base te-types:objective-function-type; + } + description + "Optimization criterion applied to this topology."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering"; + } + list nsrlg { + if-feature "nsrlg"; + key "id"; + description + "List of NSRLGs (Non-Shared Risk Link Groups)."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + leaf id { + type uint32; + description + "Identifies the NSRLG entry."; + } + leaf disjointness { + type te-types:te-path-disjointness; + description + "The type of resource disjointness."; + } + } + // nsrlg + } + // te-topology-config + + grouping template-attributes { + description + "Common attributes for all templates."; + leaf priority { + type uint16; + description + "The preference value for resolving conflicts between + different templates. When two or more templates specify + values for one configuration attribute, the value from the + template with the highest priority is used. + A lower number indicates a higher priority. The highest + priority is 0."; + } + leaf reference-change-policy { + type enumeration { + enum no-action { + description + "When an attribute changes in this template, the + configuration node referring to this template does + not take any action."; + } + enum not-allowed { + description + "When any configuration object has a reference to this + template, changing this template is not allowed."; + } + enum cascade { + description + "When an attribute changes in this template, the + configuration object referring to this template applies + the new attribute value to the corresponding + configuration."; + } + } + description + "This attribute specifies the action taken for a + configuration node that has a reference to this template."; + } + } + // template-attributes + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces a new network type for a TE topology."; + container te-topology { + presence "Indicates a TE topology"; + description + "Its presence identifies the TE topology type."; + } + } + + augment "/nw:networks" { + description + "Augmentation parameters for TE topologies."; + uses te-topologies-augment; + } + + augment "/nw:networks/nw:network" { + when 'nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for a TE topology."; + uses te-topology-augment; + } + + augment "/nw:networks/nw:network/nw:node" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the node level."; + leaf te-node-id { + type te-types:te-node-id; + description + "The identifier of a node in the TE topology. + A node is specific to a topology to which it belongs."; + } + container te { + must '../te-node-id' { + description + "'te-node-id' is mandatory."; + } + must 'count(../nw:supporting-node)<=1' { + description + "For a node in a TE topology, there cannot be more + than one supporting node. If multiple nodes are + abstracted, the 'underlay-topology' field is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-node-augment; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the link level."; + container te { + must 'count(../nt:supporting-link)<=1' { + description + "For a link in a TE topology, there cannot be more + than one supporting link. If one or more link paths are + abstracted, the underlay is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-link-augment; + } + } + + augment "/nw:networks/nw:network/nw:node/" + + "nt:termination-point" { + when '../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the termination point + level."; + uses te-termination-point-augment; + } + + augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/" + + "bundle/bundled-links/bundled-link" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for a TE bundled link."; + leaf src-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:source/" + + "nt:source-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same source node."; + } + leaf des-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:destination/" + + "nt:dest-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same destination node."; + } + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "information-source-entry/connectivity-matrices/" + + "connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/" + + "connectivity-matrices/connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "tunnel-termination-point/local-link-connectivities" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for TE node TTP LLCs (Local Link + Connectivities)."; + uses te-node-tunnel-termination-point-llc-list; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-types@2020-06-10.yang new file mode 100644 index 000000000..6fc0544de --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-te-types@2020-06-10.yang @@ -0,0 +1,3379 @@ +module ietf-te-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; + prefix te-types; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful + YANG data type definitions specific to TE. The model fully + conforms to the Network Management Datastore Architecture + (NMDA). + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2020 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8776; see the + RFC itself for full legal notices."; + + revision 2020-06-10 { + description + "Latest revision of TE types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /** + * Typedefs + */ + + typedef admin-group { + type yang:hex-string { + /* 01:02:03:04 */ + length "1..11"; + } + description + "Administrative group / resource class / color representation + in 'hex-string' type. + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. Leading zero bytes in the + configured value may be omitted for brevity."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef admin-groups { + type union { + type admin-group; + type extended-admin-group; + } + description + "Derived types for TE administrative groups."; + } + + typedef extended-admin-group { + type yang:hex-string; + description + "Extended administrative group / resource class / color + representation in 'hex-string' type. + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. Leading zero bytes in the + configured value may be omitted for brevity."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef path-attribute-flags { + type union { + type identityref { + base session-attributes-flags; + } + type identityref { + base lsp-attributes-flags; + } + } + description + "Path attributes flags type."; + } + + typedef performance-metrics-normality { + type enumeration { + enum unknown { + value 0; + description + "Unknown."; + } + enum normal { + value 1; + description + "Normal. Indicates that the anomalous bit is not set."; + } + enum abnormal { + value 2; + description + "Abnormal. Indicates that the anomalous bit is set."; + } + } + description + "Indicates whether a performance metric is normal (anomalous + bit not set), abnormal (anomalous bit set), or unknown."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + typedef srlg { + type uint32; + description + "SRLG type."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS) + RFC 5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + typedef te-common-status { + type enumeration { + enum up { + description + "Enabled."; + } + enum down { + description + "Disabled."; + } + enum testing { + description + "In some test mode."; + } + enum preparing-maintenance { + description + "The resource is disabled in the control plane to prepare + for a graceful shutdown for maintenance purposes."; + reference + "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS + Traffic Engineering Networks"; + } + enum maintenance { + description + "The resource is disabled in the data plane for maintenance + purposes."; + } + enum unknown { + description + "Status is unknown."; + } + } + description + "Defines a type representing the common states of a TE + resource."; + } + + typedef te-bandwidth { + type string { + pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' + + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; + } + description + "This is the generic bandwidth type. It is a string containing + a list of numbers separated by commas, where each of these + numbers can be non-negative decimal, hex integer, or + hex float: + + (dec | hex | float)[*(','(dec | hex | float))] + + For the packet-switching type, the string encoding follows + the type 'bandwidth-ieee-float32' as defined in RFC 8294 + (e.g., 0x1p10), where the units are in bytes per second. + + For the Optical Transport Network (OTN) switching type, + a list of integers can be used, such as '0,2,3,1', indicating + two ODU0s and one ODU3. ('ODU' stands for 'Optical Data + Unit'.) For Dense Wavelength Division Multiplexing (DWDM), + a list of pairs of slot numbers and widths can be used, + such as '0,2,3,3', indicating a frequency slot 0 with + slot width 2 and a frequency slot 3 with slot width 3. + Canonically, the string is represented as all lowercase and in + hex, where the prefix '0x' precedes the hex number."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area + ITU-T Recommendation G.709: Interfaces for the + optical transport network"; + } + + typedef te-ds-class { + type uint8 { + range "0..7"; + } + description + "The Differentiated Services Class-Type of traffic."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering, Section 4.3.1"; + } + + typedef te-global-id { + type uint32; + description + "An identifier to uniquely identify an operator, which can be + either a provider or a client. + The definition of this type is taken from RFCs 6370 and 5003. + This attribute type is used solely to provide a globally + unique context for TE topologies."; + reference + "RFC 5003: Attachment Individual Identifier (AII) Types for + Aggregation + RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers"; + } + + typedef te-hop-type { + type enumeration { + enum loose { + description + "A loose hop in an explicit path."; + } + enum strict { + description + "A strict hop in an explicit path."; + } + } + description + "Enumerated type for specifying loose or strict paths."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3.3"; + } + + typedef te-link-access-type { + type enumeration { + enum point-to-point { + description + "The link is point-to-point."; + } + enum multi-access { + description + "The link is multi-access, including broadcast and NBMA."; + } + } + description + "Defines a type representing the access type of a TE link."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + + typedef te-label-direction { + type enumeration { + enum forward { + description + "Label allocated for the forward LSP direction."; + } + enum reverse { + description + "Label allocated for the reverse LSP direction."; + } + } + description + "Enumerated type for specifying the forward or reverse + label."; + } + + typedef te-link-direction { + type enumeration { + enum incoming { + description + "The explicit route represents an incoming link on + a node."; + } + enum outgoing { + description + "The explicit route represents an outgoing link on + a node."; + } + } + description + "Enumerated type for specifying the direction of a link on + a node."; + } + + typedef te-metric { + type uint32; + description + "TE metric."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + + typedef te-node-id { + type yang:dotted-quad; + description + "A type representing the identifier for a node in a TE + topology. + The identifier is represented as 4 octets in dotted-quad + notation. + This attribute MAY be mapped to the Router Address TLV + described in Section 2.4.1 of RFC 3630, the TE Router ID + described in Section 3 of RFC 6827, the Traffic Engineering + Router ID TLV described in Section 4.3 of RFC 5305, or the + TE Router ID TLV described in Section 3.2.1 of RFC 6119. + The reachability of such a TE node MAY be achieved by a + mechanism such as that described in Section 6.2 of RFC 6827."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.4.1 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 4.3 + RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1 + RFC 6827: Automatically Switched Optical Network (ASON) + Routing for OSPFv2 Protocols, Section 3"; + } + + typedef te-oper-status { + type te-common-status; + description + "Defines a type representing the operational status of + a TE resource."; + } + + typedef te-admin-status { + type te-common-status; + description + "Defines a type representing the administrative status of + a TE resource."; + } + + typedef te-path-disjointness { + type bits { + bit node { + position 0; + description + "Node disjoint."; + } + bit link { + position 1; + description + "Link disjoint."; + } + bit srlg { + position 2; + description + "SRLG (Shared Risk Link Group) disjoint."; + } + } + description + "Type of the resource disjointness for a TE tunnel path."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + typedef te-recovery-status { + type enumeration { + enum normal { + description + "Both the recovery span and the working span are fully + allocated and active, data traffic is being + transported over (or selected from) the working + span, and no trigger events are reported."; + } + enum recovery-started { + description + "The recovery action has been started but not completed."; + } + enum recovery-succeeded { + description + "The recovery action has succeeded. The working span has + reported a failure/degrade condition, and the user traffic + is being transported (or selected) on the recovery span."; + } + enum recovery-failed { + description + "The recovery action has failed."; + } + enum reversion-started { + description + "The reversion has started."; + } + enum reversion-succeeded { + description + "The reversion action has succeeded."; + } + enum reversion-failed { + description + "The reversion has failed."; + } + enum recovery-unavailable { + description + "The recovery is unavailable, as a result of either an + operator's lockout command or a failure condition + detected on the recovery span."; + } + enum recovery-admin { + description + "The operator has issued a command to switch the user + traffic to the recovery span."; + } + enum wait-to-restore { + description + "The recovery domain is recovering from a failure/degrade + condition on the working span that is being controlled by + the Wait-to-Restore (WTR) timer."; + } + } + description + "Defines the status of a recovery action."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS) + RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; + } + + typedef te-template-name { + type string { + pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + description + "A type for the name of a TE node template or TE link + template."; + } + + typedef te-topology-event-type { + type enumeration { + enum add { + value 0; + description + "A TE node or TE link has been added."; + } + enum remove { + value 1; + description + "A TE node or TE link has been removed."; + } + enum update { + value 2; + description + "A TE node or TE link has been updated."; + } + } + description + "TE event type for notifications."; + } + + typedef te-topology-id { + type union { + type string { + length "0"; + // empty string + } + type string { + pattern '([a-zA-Z0-9\-_.]+:)*' + + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + } + description + "An identifier for a topology. + It is optional to have one or more prefixes at the beginning, + separated by colons. The prefixes can be 'network-types' as + defined in the 'ietf-network' module in RFC 8345, to help the + user better understand the topology before further inquiry + is made."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef te-tp-id { + type union { + type uint32; + // Unnumbered + type inet:ip-address; + // IPv4 or IPv6 address + } + description + "An identifier for a TE link endpoint on a node. + This attribute is mapped to a local or remote link identifier + as defined in RFCs 3630 and 5305."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + + /* TE features */ + + feature p2mp-te { + description + "Indicates support for Point-to-Multipoint TE (P2MP-TE)."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE + Label Switched Paths (LSPs)"; + } + + feature frr-te { + description + "Indicates support for TE Fast Reroute (FRR)."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; + } + + feature extended-admin-groups { + description + "Indicates support for TE link extended administrative + groups."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + feature named-path-affinities { + description + "Indicates support for named path affinities."; + } + + feature named-extended-admin-groups { + description + "Indicates support for named extended administrative groups."; + } + + feature named-srlg-groups { + description + "Indicates support for named SRLG groups."; + } + + feature named-path-constraints { + description + "Indicates support for named path constraints."; + } + + feature path-optimization-metric { + description + "Indicates support for path optimization metrics."; + } + + feature path-optimization-objective-function { + description + "Indicates support for path optimization objective functions."; + } + + /* + * Identities + */ + + identity session-attributes-flags { + description + "Base identity for the RSVP-TE session attributes flags."; + } + + identity local-protection-desired { + base session-attributes-flags; + description + "Local protection is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity se-style-desired { + base session-attributes-flags; + description + "Shared explicit style, to allow the LSP to be established + and share resources with the old LSP."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity local-recording-desired { + base session-attributes-flags; + description + "Label recording is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity bandwidth-protection-desired { + base session-attributes-flags; + description + "Requests FRR bandwidth protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; + } + + identity node-protection-desired { + base session-attributes-flags; + description + "Requests FRR node protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; + } + + identity path-reevaluation-request { + base session-attributes-flags; + description + "This flag indicates that a path re-evaluation (of the + current path in use) is requested. Note that this does + not trigger any LSP reroutes but instead just signals a + request to evaluate whether a preferable path exists."; + reference + "RFC 4736: Reoptimization of Multiprotocol Label Switching + (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched + Path (LSP)"; + } + + identity soft-preemption-desired { + base session-attributes-flags; + description + "Soft preemption of LSP resources is desired."; + reference + "RFC 5712: MPLS Traffic Engineering Soft Preemption"; + } + + identity lsp-attributes-flags { + description + "Base identity for LSP attributes flags."; + } + + identity end-to-end-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates end-to-end rerouting behavior for an LSP + undergoing establishment. This MAY also be used to + specify the behavior of end-to-end LSP recovery for + established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic Engineering + (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity boundary-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates boundary rerouting behavior for an LSP undergoing + establishment. This MAY also be used to specify + segment-based LSP recovery through nested crankback for + established LSPs. The boundary Area Border Router (ABR) / + Autonomous System Border Router (ASBR) can decide to forward + the PathErr message upstream to either an upstream boundary + ABR/ASBR or the ingress LSR. Alternatively, it can try to + select another egress boundary LSR."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic Engineering + (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity segment-based-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates segment-based rerouting behavior for an LSP + undergoing establishment. This MAY also be used to specify + segment-based LSP recovery for established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic Engineering + (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity lsp-integrity-required { + base lsp-attributes-flags; + description + "Indicates that LSP integrity is required."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE + Label Switched Paths (LSPs) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity contiguous-lsp-desired { + base lsp-attributes-flags; + description + "Indicates that a contiguous LSP is desired."; + reference + "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering -- + Resource Reservation Protocol-Traffic Engineering (RSVP-TE) + Extensions + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity lsp-stitching-desired { + base lsp-attributes-flags; + description + "Indicates that LSP stitching is desired."; + reference + "RFC 5150: Label Switched Path Stitching with Generalized + Multiprotocol Label Switching Traffic Engineering (GMPLS TE) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity pre-planned-lsp-flag { + base lsp-attributes-flags; + description + "Indicates that the LSP MUST be provisioned in the + control plane only."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for + Multi-Layer and Multi-Region Networks (MLN/MRN) + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity non-php-behavior-flag { + base lsp-attributes-flags; + description + "Indicates that non-PHP (non-Penultimate Hop Popping) behavior + for the LSP is desired."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band + Mapping for RSVP-TE Label Switched Paths + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity oob-mapping-flag { + base lsp-attributes-flags; + description + "Indicates that signaling of the egress binding information is + out of band (e.g., via the Border Gateway Protocol (BGP))."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band + Mapping for RSVP-TE Label Switched Paths + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity entropy-label-capability { + base lsp-attributes-flags; + description + "Indicates entropy label capability."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding + RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO)"; + } + + identity oam-mep-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group End Point (MEP) entities + desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) Configuration"; + } + + identity oam-mip-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group Intermediate Points (MIP) + entities desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) Configuration"; + } + + identity srlg-collection-desired { + base lsp-attributes-flags; + description + "SRLG collection desired."; + reference + "RFC 7570: Label Switched Path (LSP) Attribute in the Explicit + Route Object (ERO) + RFC 8001: RSVP-TE Extensions for Collecting Shared Risk + Link Group (SRLG) Information"; + } + + identity loopback-desired { + base lsp-attributes-flags; + description + "This flag indicates that a particular node on the LSP is + required to enter loopback mode. This can also be + used to specify the loopback state of the node."; + reference + "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and + Loopback"; + } + + identity p2mp-te-tree-eval-request { + base lsp-attributes-flags; + description + "P2MP-TE tree re-evaluation request."; + reference + "RFC 8149: RSVP Extensions for Reoptimization of Loosely Routed + Point-to-Multipoint Traffic Engineering Label Switched Paths + (LSPs)"; + } + + identity rtm-set-desired { + base lsp-attributes-flags; + description + "Residence Time Measurement (RTM) attribute flag requested."; + reference + "RFC 8169: Residence Time Measurement in MPLS Networks"; + } + + identity link-protection-type { + description + "Base identity for the link protection type."; + } + + identity link-protection-unprotected { + base link-protection-type; + description + "Unprotected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity link-protection-extra-traffic { + base link-protection-type; + description + "Extra-Traffic protected link type."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity link-protection-shared { + base link-protection-type; + description + "Shared protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity link-protection-1-for-1 { + base link-protection-type; + description + "One-for-one (1:1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity link-protection-1-plus-1 { + base link-protection-type; + description + "One-plus-one (1+1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity link-protection-enhanced { + base link-protection-type; + description + "A compound link protection type derived from the underlay + TE tunnel protection configuration supporting the TE link."; + } + + identity association-type { + description + "Base identity for the tunnel association."; + } + + identity association-type-recovery { + base association-type; + description + "Association type for recovery, used to associate LSPs of the + same tunnel for recovery."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-resource-sharing { + base association-type; + description + "Association type for resource sharing, used to enable + resource sharing during make-before-break."; + reference + "RFC 4873: GMPLS Segment Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-double-sided-bidir { + base association-type; + description + "Association type for double-sided bidirectional LSPs, + used to associate two LSPs of two tunnels that are + independently configured on either endpoint."; + reference + "RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity association-type-single-sided-bidir { + base association-type; + description + "Association type for single-sided bidirectional LSPs, + used to associate two LSPs of two tunnels, where one + tunnel is configured on one side/endpoint and the other + tunnel is dynamically created on the other endpoint."; + reference + "RFC 6780: RSVP ASSOCIATION Object Extensions + RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity objective-function-type { + description + "Base objective function type."; + } + + identity of-minimize-cost-path { + base objective-function-type; + description + "Objective function for minimizing path cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity of-minimize-load-path { + base objective-function-type; + description + "Objective function for minimizing the load on one or more + paths."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity of-maximize-residual-bandwidth { + base objective-function-type; + description + "Objective function for maximizing residual bandwidth."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity of-minimize-agg-bandwidth-consumption { + base objective-function-type; + description + "Objective function for minimizing aggregate bandwidth + consumption."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity of-minimize-load-most-loaded-link { + base objective-function-type; + description + "Objective function for minimizing the load on the link that + is carrying the highest load."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity of-minimize-cost-path-set { + base objective-function-type; + description + "Objective function for minimizing the cost on a path set."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity path-computation-method { + description + "Base identity for supported path computation mechanisms."; + } + + identity path-locally-computed { + base path-computation-method; + description + "Indicates a constrained-path LSP in which the + path is computed by the local LER."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering, Section 5.4"; + } + + identity path-externally-queried { + base path-computation-method; + description + "Constrained-path LSP in which the path is obtained by + querying an external source, such as a PCE server. + In the case that an LSP is defined to be externally queried, + it may also have associated explicit definitions (provided + to the external source to aid computation). The path that is + returned by the external source may require further local + computation on the device."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering + RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity path-explicitly-defined { + base path-computation-method; + description + "Constrained-path LSP in which the path is + explicitly specified as a collection of strict and/or loose + hops."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 3272: Overview and Principles of Internet Traffic + Engineering"; + } + + identity lsp-metric-type { + description + "Base identity for the LSP metric specification types."; + } + + identity lsp-metric-relative { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as a value relative to the IGP metric + cost to the LSP's tail end."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-absolute { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as an absolute value."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-inherited { + base lsp-metric-type; + description + "The metric for the LSPs to which this identity refers is + not specified explicitly; rather, it is directly inherited + from the IGP cost."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity te-tunnel-type { + description + "Base identity from which specific tunnel types are derived."; + } + + identity te-tunnel-p2p { + base te-tunnel-type; + description + "TE Point-to-Point (P2P) tunnel type."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity te-tunnel-p2mp { + base te-tunnel-type; + description + "TE P2MP tunnel type."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE + Label Switched Paths (LSPs)"; + } + + identity tunnel-action-type { + description + "Base identity from which specific tunnel action types + are derived."; + } + + identity tunnel-action-resetup { + base tunnel-action-type; + description + "TE tunnel action that tears down the tunnel's current LSP + (if any) and attempts to re-establish a new LSP."; + } + + identity tunnel-action-reoptimize { + base tunnel-action-type; + description + "TE tunnel action that reoptimizes the placement of the + tunnel LSP(s)."; + } + + identity tunnel-action-switchpath { + base tunnel-action-type; + description + "TE tunnel action that switches the tunnel's LSP to use the + specified path."; + } + + identity te-action-result { + description + "Base identity from which specific TE action results + are derived."; + } + + identity te-action-success { + base te-action-result; + description + "TE action was successful."; + } + + identity te-action-fail { + base te-action-result; + description + "TE action failed."; + } + + identity tunnel-action-inprogress { + base te-action-result; + description + "TE action is in progress."; + } + + identity tunnel-admin-state-type { + description + "Base identity for TE tunnel administrative states."; + } + + identity tunnel-admin-state-up { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is up."; + } + + identity tunnel-admin-state-down { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is down."; + } + + identity tunnel-state-type { + description + "Base identity for TE tunnel states."; + } + + identity tunnel-state-up { + base tunnel-state-type; + description + "Tunnel's state is up."; + } + + identity tunnel-state-down { + base tunnel-state-type; + description + "Tunnel's state is down."; + } + + identity lsp-state-type { + description + "Base identity for TE LSP states."; + } + + identity lsp-path-computing { + base lsp-state-type; + description + "State path computation is in progress."; + } + + identity lsp-path-computation-ok { + base lsp-state-type; + description + "State path computation was successful."; + } + + identity lsp-path-computation-failed { + base lsp-state-type; + description + "State path computation failed."; + } + + identity lsp-state-setting-up { + base lsp-state-type; + description + "State is being set up."; + } + + identity lsp-state-setup-ok { + base lsp-state-type; + description + "State setup was successful."; + } + + identity lsp-state-setup-failed { + base lsp-state-type; + description + "State setup failed."; + } + + identity lsp-state-up { + base lsp-state-type; + description + "State is up."; + } + + identity lsp-state-tearing-down { + base lsp-state-type; + description + "State is being torn down."; + } + + identity lsp-state-down { + base lsp-state-type; + description + "State is down."; + } + + identity path-invalidation-action-type { + description + "Base identity for TE path invalidation action types."; + } + + identity path-invalidation-action-drop { + base path-invalidation-action-type; + description + "Upon invalidation of the TE tunnel path, the tunnel remains + valid, but any packet mapped over the tunnel is dropped."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity path-invalidation-action-teardown { + base path-invalidation-action-type; + description + "TE path invalidation action teardown."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity lsp-restoration-type { + description + "Base identity from which LSP restoration types are derived."; + } + + identity lsp-restoration-restore-any { + base lsp-restoration-type; + description + "Any LSP affected by a failure is restored."; + } + + identity lsp-restoration-restore-all { + base lsp-restoration-type; + description + "Affected LSPs are restored after all LSPs of the tunnel are + broken."; + } + + identity restoration-scheme-type { + description + "Base identity for LSP restoration schemes."; + } + + identity restoration-scheme-preconfigured { + base restoration-scheme-type; + description + "Restoration LSP is preconfigured prior to the failure."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity restoration-scheme-precomputed { + base restoration-scheme-type; + description + "Restoration LSP is precomputed prior to the failure."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity restoration-scheme-presignaled { + base restoration-scheme-type; + description + "Restoration LSP is presignaled prior to the failure."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity lsp-protection-type { + description + "Base identity from which LSP protection types are derived."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-unprotected { + base lsp-protection-type; + description + "'Unprotected' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-reroute-extra { + base lsp-protection-type; + description + "'(Full) Rerouting' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-reroute { + base lsp-protection-type; + description + "'Rerouting without Extra-Traffic' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-1-for-n { + base lsp-protection-type; + description + "'1:N Protection with Extra-Traffic' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-1-for-1 { + base lsp-protection-type; + description + "LSP protection '1:1 Protection Type'."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-unidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Unidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-bidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Bidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) Recovery"; + } + + identity lsp-protection-extra-traffic { + base lsp-protection-type; + description + "Extra-Traffic LSP protection type."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity lsp-protection-state { + description + "Base identity of protection states for reporting purposes."; + } + + identity normal { + base lsp-protection-state; + description + "Normal state."; + } + + identity signal-fail-of-protection { + base lsp-protection-state; + description + "The protection transport entity has a signal fail condition + that is of higher priority than the forced switchover + command."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity lockout-of-protection { + base lsp-protection-state; + description + "A Loss of Protection (LoP) command is active."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity forced-switch { + base lsp-protection-state; + description + "A forced switchover command is active."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity signal-fail { + base lsp-protection-state; + description + "There is a signal fail condition on either the working path + or the protection path."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity signal-degrade { + base lsp-protection-state; + description + "There is a signal degrade condition on either the working + path or the protection path."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity manual-switch { + base lsp-protection-state; + description + "A manual switchover command is active."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity wait-to-restore { + base lsp-protection-state; + description + "A WTR timer is running."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity do-not-revert { + base lsp-protection-state; + description + "A Do Not Revert (DNR) condition is active because of + non-revertive behavior."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity failure-of-protocol { + base lsp-protection-state; + description + "LSP protection is not working because of a protocol failure + condition."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity protection-external-commands { + description + "Base identity from which protection-related external commands + used for troubleshooting purposes are derived."; + } + + identity action-freeze { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command that prevents any switchover action from being taken + and, as such, freezes the current state."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity clear-freeze { + base protection-external-commands; + description + "An action that clears the active freeze state."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity action-lockout-of-normal { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the normal traffic is not allowed + to use the protection transport entity."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity clear-lockout-of-normal { + base protection-external-commands; + description + "An action that clears the active lockout of the + normal state."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity action-lockout-of-protection { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the protection transport entity is + temporarily not available to transport a traffic signal + (either normal or Extra-Traffic)."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity action-forced-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to switch + the Extra-Traffic signal, the normal traffic signal, or the + null signal to the protection transport entity, unless a + switchover command of equal or higher priority is in effect."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity action-manual-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to switch + the Extra-Traffic signal, the normal traffic signal, or + the null signal to the protection transport entity, unless + a fault condition exists on other transport entities or a + switchover command of equal or higher priority is in effect."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity action-exercise { + base protection-external-commands; + description + "An action that starts testing whether or not APS communication + is operating correctly. It is of lower priority than any + other state or command."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity clear { + base protection-external-commands; + description + "An action that clears the active near-end lockout of a + protection, forced switchover, manual switchover, WTR state, + or exercise command."; + reference + "RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching (GMPLS)"; + } + + identity switching-capabilities { + description + "Base identity for interface switching capabilities."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-psc1 { + base switching-capabilities; + description + "Packet-Switch Capable-1 (PSC-1)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-evpl { + base switching-capabilities; + description + "Ethernet Virtual Private Line (EVPL)."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro Ethernet + Forum and G.8011 Ethernet Service Switching"; + } + + identity switching-l2sc { + base switching-capabilities; + description + "Layer-2 Switch Capable (L2SC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-tdm { + base switching-capabilities; + description + "Time-Division-Multiplex Capable (TDM)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-otn { + base switching-capabilities; + description + "OTN-TDM capable."; + reference + "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS + Control of Evolving G.709 Optical Transport Networks"; + } + + identity switching-dcsc { + base switching-capabilities; + description + "Data Channel Switching Capable (DCSC)."; + reference + "RFC 6002: Generalized MPLS (GMPLS) Data Channel + Switching Capable (DCSC) and Channel Set Label Extensions"; + } + + identity switching-lsc { + base switching-capabilities; + description + "Lambda-Switch Capable (LSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-fsc { + base switching-capabilities; + description + "Fiber-Switch Capable (FSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-types { + description + "Base identity for encoding types."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-packet { + base lsp-encoding-types; + description + "Packet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-ethernet { + base lsp-encoding-types; + description + "Ethernet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-pdh { + base lsp-encoding-types; + description + "ANSI/ETSI PDH LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-sdh { + base lsp-encoding-types; + description + "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-digital-wrapper { + base lsp-encoding-types; + description + "Digital Wrapper LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-lambda { + base lsp-encoding-types; + description + "Lambda (photonic) LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber { + base lsp-encoding-types; + description + "Fiber LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber-channel { + base lsp-encoding-types; + description + "FiberChannel LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-oduk { + base lsp-encoding-types; + description + "G.709 ODUk (Digital Path) LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport Networks + Control"; + } + + identity lsp-encoding-optical-channel { + base lsp-encoding-types; + description + "G.709 Optical Channel LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport Networks + Control"; + } + + identity lsp-encoding-line { + base lsp-encoding-types; + description + "Line (e.g., 8B/10B) LSP encoding."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro + Ethernet Forum and G.8011 Ethernet Service Switching"; + } + + identity path-signaling-type { + description + "Base identity from which specific LSP path setup types + are derived."; + } + + identity path-setup-static { + base path-signaling-type; + description + "Static LSP provisioning path setup."; + } + + identity path-setup-rsvp { + base path-signaling-type; + description + "RSVP-TE signaling path setup."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity path-setup-sr { + base path-signaling-type; + description + "Segment-routing path setup."; + } + + identity path-scope-type { + description + "Base identity from which specific path scope types are + derived."; + } + + identity path-scope-segment { + base path-scope-type; + description + "Path scope segment."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity path-scope-end-to-end { + base path-scope-type; + description + "Path scope end to end."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity route-usage-type { + description + "Base identity for route usage."; + } + + identity route-include-object { + base route-usage-type; + description + "'Include route' object."; + } + + identity route-exclude-object { + base route-usage-type; + description + "'Exclude route' object."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity route-exclude-srlg { + base route-usage-type; + description + "Excludes SRLGs."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity path-metric-type { + description + "Base identity for the path metric type."; + } + + identity path-metric-te { + base path-metric-type; + description + "TE path metric."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + + identity path-metric-igp { + base path-metric-type; + description + "IGP path metric."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + + identity path-metric-hop { + base path-metric-type; + description + "Hop path metric."; + } + + identity path-metric-delay-average { + base path-metric-type; + description + "Average unidirectional link delay."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + + identity path-metric-delay-minimum { + base path-metric-type; + description + "Minimum unidirectional link delay."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + + identity path-metric-residual-bandwidth { + base path-metric-type; + description + "Unidirectional Residual Bandwidth, which is defined to be + Maximum Bandwidth (RFC 3630) minus the bandwidth currently + allocated to LSPs."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + + identity path-metric-optimize-includes { + base path-metric-type; + description + "A metric that optimizes the number of included resources + specified in a set."; + } + + identity path-metric-optimize-excludes { + base path-metric-type; + description + "A metric that optimizes to a maximum the number of excluded + resources specified in a set."; + } + + identity path-tiebreaker-type { + description + "Base identity for the path tiebreaker type."; + } + + identity path-tiebreaker-minfill { + base path-tiebreaker-type; + description + "Min-Fill LSP path placement."; + } + + identity path-tiebreaker-maxfill { + base path-tiebreaker-type; + description + "Max-Fill LSP path placement."; + } + + identity path-tiebreaker-random { + base path-tiebreaker-type; + description + "Random LSP path placement."; + } + + identity resource-affinities-type { + description + "Base identity for resource class affinities."; + reference + "RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-include-all { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, all of which must be present for a link + to be acceptable."; + reference + "RFC 2702: Requirements for Traffic Engineering Over MPLS + RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity resource-aff-include-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which must be present for a link + to be acceptable."; + reference + "RFC 2702: Requirements for Traffic Engineering Over MPLS + RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity resource-aff-exclude-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which renders a link unacceptable."; + reference + "RFC 2702: Requirements for Traffic Engineering Over MPLS + RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity te-optimization-criterion { + description + "Base identity for the TE optimization criteria."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering"; + } + + identity not-optimized { + base te-optimization-criterion; + description + "Optimization is not applied."; + } + + identity cost { + base te-optimization-criterion; + description + "Optimized on cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity delay { + base te-optimization-criterion; + description + "Optimized on delay."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity path-computation-srlg-type { + description + "Base identity for SRLG path computation."; + } + + identity srlg-ignore { + base path-computation-srlg-type; + description + "Ignores SRLGs in the path computation."; + } + + identity srlg-strict { + base path-computation-srlg-type; + description + "Includes a strict SRLG check in the path computation."; + } + + identity srlg-preferred { + base path-computation-srlg-type; + description + "Includes a preferred SRLG check in the path computation."; + } + + identity srlg-weighted { + base path-computation-srlg-type; + description + "Includes a weighted SRLG check in the path computation."; + } + + /** + * TE bandwidth groupings + **/ + + grouping te-bandwidth { + description + "This grouping defines the generic TE bandwidth. + For some known data-plane technologies, specific modeling + structures are specified. The string-encoded 'te-bandwidth' + type is used for unspecified technologies. + The modeling structure can be augmented later for other + technologies."; + container te-bandwidth { + description + "Container that specifies TE bandwidth. The choices + can be augmented for specific data-plane technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type te-bandwidth; + description + "Bandwidth specified in a generic format."; + } + } + } + } + } + + /** + * TE label groupings + **/ + + grouping te-label { + description + "This grouping defines the generic TE label. + The modeling structure can be augmented for each technology. + For unspecified technologies, 'rt-types:generalized-label' + is used."; + container te-label { + description + "Container that specifies the TE label. The choices can + be augmented for specific data-plane technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type rt-types:generalized-label; + description + "TE label specified in a generic format."; + } + } + } + leaf direction { + type te-label-direction; + default "forward"; + description + "Label direction."; + } + } + } + + grouping te-topology-identifier { + description + "Augmentation for a TE topology."; + container te-topology-identifier { + description + "TE topology identifier container."; + leaf provider-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a provider. + If omitted, it assumes that the topology provider ID + value = 0 (the default)."; + } + leaf client-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a client. + If omitted, it assumes that the topology client ID + value = 0 (the default)."; + } + leaf topology-id { + type te-topology-id; + default ""; + description + "When the datastore contains several topologies, + 'topology-id' distinguishes between them. If omitted, + the default (empty) string for this leaf is assumed."; + } + } + } + + /** + * TE performance metrics groupings + **/ + + grouping performance-metrics-one-way-delay-loss { + description + "Performance Metrics (PM) information in real time that can + be applicable to links or connections. PM defined in this + grouping are applicable to generic TE PM as well as packet TE + PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + description + "One-way delay or latency in microseconds."; + } + leaf one-way-delay-normality { + type te-types:performance-metrics-normality; + description + "One-way delay normality."; + } + } + + grouping performance-metrics-two-way-delay-loss { + description + "PM information in real time that can be applicable to links or + connections. PM defined in this grouping are applicable to + generic TE PM as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + description + "Two-way delay or latency in microseconds."; + } + leaf two-way-delay-normality { + type te-types:performance-metrics-normality; + description + "Two-way delay normality."; + } + } + + grouping performance-metrics-one-way-bandwidth { + description + "PM information in real time that can be applicable to links. + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-residual-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Residual bandwidth normality."; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. For a + bundled link, available bandwidth is defined to be the + sum of the component link available bandwidths."; + } + leaf one-way-available-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Available bandwidth normality."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + leaf one-way-utilized-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Bandwidth utilization normality."; + } + } + + grouping one-way-performance-metrics { + description + "One-way PM throttle grouping."; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "One-way delay or latency in microseconds."; + } + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. For a + bundled link, available bandwidth is defined to be the + sum of the component link available bandwidths."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + } + + grouping two-way-performance-metrics { + description + "Two-way PM throttle grouping."; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Two-way delay or latency in microseconds."; + } + } + + grouping performance-metrics-thresholds { + description + "Grouping for configurable thresholds for measured + attributes."; + uses one-way-performance-metrics; + uses two-way-performance-metrics; + } + + grouping performance-metrics-attributes { + description + "Contains PM attributes."; + container performance-metrics-one-way { + description + "One-way link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + uses performance-metrics-one-way-delay-loss; + uses performance-metrics-one-way-bandwidth; + } + container performance-metrics-two-way { + description + "Two-way link performance information in real time."; + reference + "RFC 6374: Packet Loss and Delay Measurement for MPLS + Networks"; + uses performance-metrics-two-way-delay-loss; + } + } + + grouping performance-metrics-throttle-container { + description + "Controls PM throttling."; + container throttle { + must 'suppression-interval >= measure-interval' { + error-message "'suppression-interval' cannot be less than " + + "'measure-interval'."; + description + "Constraint on 'suppression-interval' and + 'measure-interval'."; + } + description + "Link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + leaf one-way-delay-offset { + type uint32 { + range "0..16777215"; + } + default "0"; + description + "Offset value to be added to the measured delay value."; + } + leaf measure-interval { + type uint32; + default "30"; + description + "Interval, in seconds, to measure the extended metric + values."; + } + leaf advertisement-interval { + type uint32; + default "0"; + description + "Interval, in seconds, to advertise the extended metric + values."; + } + leaf suppression-interval { + type uint32 { + range "1..max"; + } + default "120"; + description + "Interval, in seconds, to suppress advertisement of the + extended metric values."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 6"; + } + container threshold-out { + uses performance-metrics-thresholds; + description + "If the measured parameter falls outside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already outside that bound, an 'anomalous' + announcement (anomalous bit set) will be triggered."; + } + container threshold-in { + uses performance-metrics-thresholds; + description + "If the measured parameter falls inside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already inside that bound, a 'normal' + announcement (anomalous bit cleared) will be triggered."; + } + container threshold-accelerated-advertisement { + description + "When the difference between the last advertised value and + the current measured value exceeds this threshold, an + 'anomalous' announcement (anomalous bit set) will be + triggered."; + uses performance-metrics-thresholds; + } + } + } + + /** + * TE tunnel generic groupings + **/ + + grouping explicit-route-hop { + description + "The explicit route entry grouping."; + choice type { + description + "The explicit route entry type."; + case numbered-node-hop { + container numbered-node-hop { + leaf node-id { + type te-node-id; + mandatory true; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + description + "Numbered node route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; + } + } + case numbered-link-hop { + container numbered-link-hop { + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "TE Link Termination Point (LTP) identifier."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + description + "Numbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; + } + } + case unnumbered-link-hop { + container unnumbered-link-hop { + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "TE LTP identifier. The combination of the TE link ID + and the TE node ID is used to identify an unnumbered + TE link."; + } + leaf node-id { + type te-node-id; + mandatory true; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + description + "Unnumbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; + } + } + case as-number { + container as-number-hop { + leaf as-number { + type inet:as-number; + mandatory true; + description + "The Autonomous System (AS) number."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + description + "AS explicit route hop."; + } + } + case label { + container label-hop { + description + "Label hop type."; + uses te-label; + } + description + "The label explicit route hop type."; + } + } + } + + grouping record-route-state { + description + "The Record Route grouping."; + leaf index { + type uint32; + description + "Record Route hop index. The index is used to + identify an entry in the list. The order of entries + is defined by the user without relying on key values."; + } + choice type { + description + "The Record Route entry type."; + case numbered-node-hop { + container numbered-node-hop { + description + "Numbered node route hop container."; + leaf node-id { + type te-node-id; + mandatory true; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + description + "Numbered node route hop."; + } + case numbered-link-hop { + container numbered-link-hop { + description + "Numbered link route hop container."; + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "Numbered TE LTP identifier."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + description + "Numbered link route hop."; + } + case unnumbered-link-hop { + container unnumbered-link-hop { + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "TE LTP identifier. The combination of the TE link ID + and the TE node ID is used to identify an unnumbered + TE link."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + description + "Unnumbered link Record Route hop."; + reference + "RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; + } + description + "Unnumbered link route hop."; + } + case label { + container label-hop { + description + "Label route hop type."; + uses te-label; + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + description + "The label Record Route entry types."; + } + } + } + + grouping label-restriction-info { + description + "Label set item information."; + leaf restriction { + type enumeration { + enum inclusive { + description + "The label or label range is inclusive."; + } + enum exclusive { + description + "The label or label range is exclusive."; + } + } + default "inclusive"; + description + "Indicates whether the list item is inclusive or exclusive."; + } + leaf index { + type uint32; + description + "The index of the label restriction list entry."; + } + container label-start { + must "(not(../label-end/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-end/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-end/te-label/direction = 'forward'))" + + " or " + + "(not(../label-end/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the starting label if a label range is specified. + This is the label value if a single label is specified, + in which case the 'label-end' attribute is not set."; + uses te-label; + } + container label-end { + must "(not(../label-start/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-start/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-start/te-label/direction = 'forward'))" + + " or " + + "(not(../label-start/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the ending label if a label range is specified. + This attribute is not set if a single label is specified."; + uses te-label; + } + container label-step { + description + "The step increment between labels in the label range. + The label start/end values will have to be consistent + with the sign of label step. For example, + 'label-start' < 'label-end' enforces 'label-step' > 0 + 'label-start' > 'label-end' enforces 'label-step' < 0."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type int32; + default "1"; + description + "Label range step."; + } + } + } + } + leaf range-bitmap { + type yang:hex-string; + description + "When there are gaps between 'label-start' and 'label-end', + this attribute is used to specify the positions + of the used labels. This is represented in big endian as + 'hex-string'. + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. Leading zero bytes in the + configured value may be omitted for brevity. + Each bit position in the 'range-bitmap' 'hex-string' maps + to a label in the range derived from 'label-start'. + + For example, assuming that 'label-start' = 16000 and + 'range-bitmap' = 0x01000001, then: + + - bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. + - bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1."; + } + } + + grouping label-set-info { + description + "Grouping for the list of label restrictions specifying what + labels may or may not be used."; + container label-restrictions { + description + "The label restrictions container."; + list label-restriction { + key "index"; + description + "The absence of the label restrictions container implies + that all labels are acceptable; otherwise, only restricted + labels are available."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + uses label-restriction-info; + } + } + } + + grouping optimization-metric-entry { + description + "Optimization metrics configuration grouping."; + leaf metric-type { + type identityref { + base path-metric-type; + } + description + "Identifies the 'metric-type' that the path computation + process uses for optimization."; + } + leaf weight { + type uint8; + default "1"; + description + "TE path metric normalization weight."; + } + container explicit-route-exclude-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-excludes'"; + description + "Container for the 'exclude route' object list."; + uses path-route-exclude-objects; + } + container explicit-route-include-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-includes'"; + description + "Container for the 'include route' object list."; + uses path-route-include-objects; + } + } + + grouping common-constraints { + description + "Common constraints grouping that can be set on + a constraint set or directly on the tunnel."; + uses te-bandwidth { + description + "A requested bandwidth to use for path computation."; + } + leaf link-protection { + type identityref { + base link-protection-type; + } + default "te-types:link-protection-unprotected"; + description + "Link protection type required for the links included + in the computed path."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + leaf setup-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested setup priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf hold-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested hold priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf signaling-type { + type identityref { + base path-signaling-type; + } + default "te-types:path-setup-rsvp"; + description + "TE tunnel path signaling type."; + } + } + + grouping tunnel-constraints { + description + "Tunnel constraints grouping that can be set on + a constraint set or directly on the tunnel."; + uses te-topology-identifier; + uses common-constraints; + } + + grouping path-constraints-route-objects { + description + "List of route entries to be included or excluded when + performing the path computation."; + container explicit-route-objects-always { + description + "Container for the 'exclude route' object list."; + list route-object-exclude-always { + key "index"; + ordered-by user; + description + "List of route objects to always exclude from the path + computation."; + leaf index { + type uint32; + description + "Explicit Route Object index. The index is used to + identify an entry in the list. The order of entries + is defined by the user without relying on key values."; + } + uses explicit-route-hop; + } + list route-object-include-exclude { + key "index"; + ordered-by user; + description + "List of route objects to include or exclude in the path + computation."; + leaf explicit-route-usage { + type identityref { + base route-usage-type; + } + default "te-types:route-include-object"; + description + "Indicates whether to include or exclude the + route object. The default is to include it."; + } + leaf index { + type uint32; + description + "Route object include-exclude index. The index is used + to identify an entry in the list. The order of entries + is defined by the user without relying on key values."; + } + uses explicit-route-hop { + augment "type" { + case srlg { + container srlg { + description + "SRLG container."; + leaf srlg { + type uint32; + description + "SRLG value."; + } + } + description + "An SRLG value to be included or excluded."; + } + description + "Augmentation for a generic explicit route for SRLG + exclusion."; + } + } + } + } + } + + grouping path-route-include-objects { + description + "List of route objects to be included when performing + the path computation."; + list route-object-include-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be included in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. The index is used to + identify an entry in the list. The order of entries + is defined by the user without relying on key values."; + } + uses explicit-route-hop; + } + } + + grouping path-route-exclude-objects { + description + "List of route objects to be excluded when performing + the path computation."; + list route-object-exclude-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be excluded in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. The index is used to + identify an entry in the list. The order of entries + is defined by the user without relying on key values."; + } + uses explicit-route-hop { + augment "type" { + case srlg { + container srlg { + description + "SRLG container."; + leaf srlg { + type uint32; + description + "SRLG value."; + } + } + description + "An SRLG value to be included or excluded."; + } + description + "Augmentation for a generic explicit route for SRLG + exclusion."; + } + } + } + } + + grouping generic-path-metric-bounds { + description + "TE path metric bounds grouping."; + container path-metric-bounds { + description + "TE path metric bounds container."; + list path-metric-bound { + key "metric-type"; + description + "List of TE path metric bounds."; + leaf metric-type { + type identityref { + base path-metric-type; + } + description + "Identifies an entry in the list of 'metric-type' items + bound for the TE path."; + } + leaf upper-bound { + type uint64; + default "0"; + description + "Upper bound on the end-to-end TE path metric. A zero + indicates an unbounded upper limit for the specific + 'metric-type'."; + } + } + } + } + + grouping generic-path-optimization { + description + "TE generic path optimization grouping."; + container optimizations { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + choice algorithm { + description + "Optimizations algorithm."; + case metric { + if-feature "path-optimization-metric"; + /* Optimize by metric */ + list optimization-metric { + key "metric-type"; + description + "TE path metric type."; + uses optimization-metric-entry; + } + /* Tiebreakers */ + container tiebreakers { + description + "Container for the list of tiebreakers."; + list tiebreaker { + key "tiebreaker-type"; + description + "The list of tiebreaker criteria to apply on an + equally favored set of paths, in order to pick + the best."; + leaf tiebreaker-type { + type identityref { + base path-metric-type; + } + description + "Identifies an entry in the list of tiebreakers."; + } + } + } + } + case objective-function { + if-feature "path-optimization-objective-function"; + /* Objective functions */ + container objective-function { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + leaf objective-function-type { + type identityref { + base objective-function-type; + } + default "te-types:of-minimize-cost-path"; + description + "Objective function entry."; + } + } + } + } + } + } + + grouping generic-path-affinities { + description + "Path affinities grouping."; + container path-affinities-values { + description + "Path affinities represented as values."; + list path-affinities-value { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of value affinity + constraints."; + } + leaf value { + type admin-groups; + default ""; + description + "The affinity value. The default is empty."; + } + } + } + container path-affinity-names { + description + "Path affinities represented as names."; + list path-affinity-name { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of named affinity + constraints."; + } + list affinity-name { + key "name"; + leaf name { + type string; + description + "Identifies a named affinity entry."; + } + description + "List of named affinities."; + } + } + } + } + + grouping generic-path-srlgs { + description + "Path SRLG grouping."; + container path-srlgs-lists { + description + "Path SRLG properties container."; + list path-srlgs-list { + key "usage"; + description + "List of SRLG values to be included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of SRLGs to either + include or exclude."; + } + leaf-list values { + type srlg; + description + "List of SRLG values."; + } + } + } + container path-srlgs-names { + description + "Container for the list of named SRLGs."; + list path-srlgs-name { + key "usage"; + description + "List of named SRLGs to be included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of named SRLGs to either + include or exclude."; + } + leaf-list names { + type string; + description + "List of named SRLGs."; + } + } + } + } + + grouping generic-path-disjointness { + description + "Path disjointness grouping."; + leaf disjointness { + type te-path-disjointness; + description + "The type of resource disjointness. + When configured for a primary path, the disjointness level + applies to all secondary LSPs. When configured for a + secondary path, the disjointness level overrides the level + configured for the primary path."; + } + } + + grouping common-path-constraints-attributes { + description + "Common path constraints configuration grouping."; + uses common-constraints; + uses generic-path-metric-bounds; + uses generic-path-affinities; + uses generic-path-srlgs; + } + + grouping generic-path-constraints { + description + "Global named path constraints configuration grouping."; + container path-constraints { + description + "TE named path constraints container."; + uses common-path-constraints-attributes; + uses generic-path-disjointness; + } + } + + grouping generic-path-properties { + description + "TE generic path properties grouping."; + container path-properties { + config false; + description + "The TE path properties."; + list path-metric { + key "metric-type"; + description + "TE path metric type."; + leaf metric-type { + type identityref { + base path-metric-type; + } + description + "TE path metric type."; + } + leaf accumulative-value { + type uint64; + description + "TE path metric accumulative value."; + } + } + uses generic-path-affinities; + uses generic-path-srlgs; + container path-route-objects { + description + "Container for the list of route objects either returned by + the computation engine or actually used by an LSP."; + list path-route-object { + key "index"; + ordered-by user; + description + "List of route objects either returned by the computation + engine or actually used by an LSP."; + leaf index { + type uint32; + description + "Route object entry index. The index is used to + identify an entry in the list. The order of entries + is defined by the user without relying on key + values."; + } + uses explicit-route-hop; + } + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-service@2023-10-23.yang new file mode 100644 index 000000000..f0157bcc8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-service@2023-10-23.yang @@ -0,0 +1,325 @@ + module ietf-trans-client-service { + /* TODO: FIXME */ + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service"; + prefix "clntsvc"; + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-layer1-types { + prefix "layer1-types"; + reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types"; + } + + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-trans-client-svc-types { + prefix "clntsvc-types"; + reference "RFC XXXX - A YANG Data Model for + Transport Network Client Signals"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client services. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + revision 2023-10-23 { + description + "version -04 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + grouping client-svc-access-parameters { + description + "Transport network client signals access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in the TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier in TE topology, used + together with access-node-id to identify the access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the access LTP"; + } + + leaf client-signal { + type identityref { + base layer1-types:client-signal; + } + description + "Identify the client signal type associated with this port"; + } + + } + + grouping pm-state-grouping { + leaf latency { + description "latency value of the E2E client signal service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + grouping client-svc-tunnel-parameters { + description + "Transport network client signals tunnel parameters"; + + leaf tunnel-name { + type string; + description + "TE tunnel instance name."; + } + } + + grouping client-svc-instance-config { + description + "Configuration parameters for client services."; + leaf client-svc-name { + type string; + description + "Identifier of the p2p transport network client signals."; + } + + leaf client-svc-title { + type string; + description + "Name of the p2p transport network client signals."; + } + + leaf user-label { + type string; + description + "Alias of the p2p transport network client signals."; + } + + leaf client-svc-descr { + type string; + description + "Description of the transport network client signals."; + } + + leaf client-svc-customer { + type string; + description + "Customer of the transport network client signals."; + } + + container resilience { + description "Place holder for resilience functionalities"; + } + + uses te-types:te-topology-identifier; + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "Client signals administrative state."; + } + + container src-access-ports { + description + "Source access port of a client signal."; + uses client-svc-access-parameters; + } + container dst-access-ports { + description + "Destination access port of a client signal."; + uses client-svc-access-parameters; + } + + container pm-state { + config false; + description "PM data of E2E client signal"; + uses pm-state-grouping; + } + + container error-info { + config false; + description "error messages of configuration"; + uses error-info-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + leaf direction { + type identityref { + base clntsvc-types:direction; + } + description "Uni-dir or Bi-dir for the client signal."; + } + + list svc-tunnels { + key tunnel-name; + description + "List of the TE Tunnels supporting the client signal."; + uses client-svc-tunnel-parameters; + } + } + + grouping client-svc-instance-state { + description + "State parameters for client services."; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description "Client signal operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + config false; + description "Client signal provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + config false; + description "The time of the client signal be created."; + } + leaf last-updated-time { + type yang:date-and-time; + config false; + description "The time of the client signal's latest update."; + } + leaf created-by { + type string; + config false; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + config false; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + config false; + description + "The client signal is owned by whom, + can be a system ID."; + } + } + + /* + * Data nodes + */ + + container client-svc { + description + "Transport client services."; + + list client-svc-instances { + key client-svc-name; + description + "The list of p2p transport client service instances"; + + uses client-svc-instance-config; + uses client-svc-instance-state; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-svc-types@2023-10-23.yang new file mode 100644 index 000000000..60db5633a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-trans-client-svc-types@2023-10-23.yang @@ -0,0 +1,63 @@ + module ietf-trans-client-svc-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types"; + prefix "clntsvc-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -01 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + identity direction { + description + "Direction information of Client Signal."; + } + + identity bidirectional { + base direction; + description + "Client Signal is bi-directional."; + } + + identity unidirectional { + base direction; + description + "Client Signal is uni-directional."; + } + + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-vpn-common@2022-02-11.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-vpn-common@2022-02-11.yang new file mode 100644 index 000000000..7205a1fdf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-vpn-common@2022-02-11.yang @@ -0,0 +1,2251 @@ +module ietf-vpn-common { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-vpn-common"; + prefix vpn-common; + + import ietf-netconf-acm { + prefix nacm; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types, Section 3"; + } + import ietf-packet-fields { + prefix packet-fields; + reference + "RFC 8519: YANG Data Model for Network Access + Control Lists (ACLs)"; + } + + organization + "IETF OPSAWG (Operations and Management Area Working Group)"; + contact + "WG Web: + WG List: + + Editor: Mohamed Boucadair + + Author: Samier Barguil + + Editor: Oscar Gonzalez de Dios + + Author: Qin Wu + "; + description + "This YANG module defines a common module that is meant + to be reused by various VPN-related modules (e.g., the + Layer 3 VPN Service Model (L3SM), the Layer 2 VPN Service + Model (L2SM), the Layer 3 VPN Network Model (L3NM), and + the Layer 2 VPN Network Model (L2NM)). + + Copyright (c) 2022 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9181; see the + RFC itself for full legal notices."; + + revision 2022-02-11 { + description + "Initial revision."; + reference + "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 + VPNs"; + } + + /******** Collection of VPN-related features ********/ + /* + * Features related to encapsulation schemes + */ + + feature dot1q { + description + "Indicates support for dot1Q encapsulation."; + reference + "IEEE Std 802.1Q: IEEE Standard for Local and Metropolitan + Area Networks--Bridges and Bridged + Networks"; + } + + feature qinq { + description + "Indicates support for QinQ encapsulation."; + reference + "IEEE Std 802.1ad: IEEE Standard for Local and Metropolitan + Area Networks---Virtual Bridged Local + Area Networks---Amendment 4: Provider + Bridges"; + } + + feature vxlan { + description + "Indicates support for Virtual eXtensible Local Area + Network (VXLAN) encapsulation."; + reference + "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): + A Framework for Overlaying Virtualized Layer 2 + Networks over Layer 3 Networks"; + } + + feature qinany { + description + "Indicates support for QinAny encapsulation. + The outer VLAN tag is set to a specific value, but + the inner VLAN tag is set to any."; + } + + feature lag-interface { + description + "Indicates support for Link Aggregation Groups (LAGs) + between VPN network accesses."; + reference + "IEEE Std 802.1AX: IEEE Standard for Local and Metropolitan + Area Networks--Link Aggregation"; + } + + /* + * Features related to multicast + */ + + feature multicast { + description + "Indicates support for multicast capabilities in a VPN."; + reference + "RFC 6513: Multicast in MPLS/BGP IP VPNs"; + } + + feature igmp { + description + "Indicates support for the Internet Group Management + Protocol (IGMP)."; + reference + "RFC 1112: Host Extensions for IP Multicasting + RFC 2236: Internet Group Management Protocol, Version 2 + RFC 3376: Internet Group Management Protocol, Version 3"; + } + + feature mld { + description + "Indicates support for Multicast Listener Discovery (MLD)."; + reference + "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 + RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) + for IPv6"; + } + + feature pim { + description + "Indicates support for Protocol Independent Multicast + (PIM)."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised)"; + } + + /* + * Features related to address family types + */ + + feature ipv4 { + description + "Indicates IPv4 support in a VPN. That is, IPv4 traffic + can be carried in the VPN, IPv4 addresses/prefixes can + be assigned to a VPN network access, IPv4 routes can be + installed for the Customer Edge to Provider Edge (CE-PE) + link, etc."; + reference + "RFC 791: Internet Protocol"; + } + + feature ipv6 { + description + "Indicates IPv6 support in a VPN. That is, IPv6 traffic + can be carried in the VPN, IPv6 addresses/prefixes can + be assigned to a VPN network access, IPv6 routes can be + installed for the CE-PE link, etc."; + reference + "RFC 8200: Internet Protocol, Version 6 (IPv6) + Specification"; + } + + /* + * Features related to routing protocols + */ + + feature rtg-ospf { + description + "Indicates support for OSPF as the Provider Edge to + Customer Edge (PE-CE) routing protocol."; + reference + "RFC 4577: OSPF as the Provider/Customer Edge Protocol + for BGP/MPLS IP Virtual Private Networks (VPNs) + RFC 6565: OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol"; + } + + feature rtg-ospf-sham-link { + description + "Indicates support for OSPF sham links."; + reference + "RFC 4577: OSPF as the Provider/Customer Edge Protocol + for BGP/MPLS IP Virtual Private Networks (VPNs), + Section 4.2.7 + RFC 6565: OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol, Section 5"; + } + + feature rtg-bgp { + description + "Indicates support for BGP as the PE-CE routing protocol."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; + } + + feature rtg-rip { + description + "Indicates support for RIP as the PE-CE routing protocol."; + reference + "RFC 2453: RIP Version 2 + RFC 2080: RIPng for IPv6"; + } + + feature rtg-isis { + description + "Indicates support for IS-IS as the PE-CE routing + protocol."; + reference + "ISO10589: Information technology - Telecommunications and + information exchange between systems - + Intermediate System to Intermediate System + intra-domain routeing information exchange + protocol for use in conjunction with the protocol + for providing the connectionless-mode network + service (ISO 8473)"; + } + + feature rtg-vrrp { + description + "Indicates support for the Virtual Router Redundancy + Protocol (VRRP) in the CE-PE link."; + reference + "RFC 5798: Virtual Router Redundancy Protocol (VRRP) + Version 3 for IPv4 and IPv6"; + } + + feature bfd { + description + "Indicates support for Bidirectional Forwarding Detection + (BFD) between the CE and the PE."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + /* + * Features related to VPN service constraints + */ + + feature bearer-reference { + description + "A bearer refers to properties of the CE-PE attachment that + are below Layer 3. + This feature indicates support for the bearer reference + access constraint, i.e., the reuse of a network connection + that was already ordered to the service provider apart from + the IP VPN site."; + } + + feature placement-diversity { + description + "Indicates support for placement diversity constraints in + the customer premises. An example of these constraints + may be to avoid connecting a site network access to the + same PE as a target site network access."; + } + + /* + * Features related to bandwidth and Quality of Service (QoS) + */ + + feature qos { + description + "Indicates support for Classes of Service (CoSes) in + the VPN."; + } + + feature inbound-bw { + description + "Indicates support for the inbound bandwidth in a VPN, + i.e., support for specifying the download bandwidth from + the service provider network to the VPN site. Note that + the L3SM uses 'input' to identify the same feature. + That terminology should be deprecated in favor of + the terminology defined in this module."; + } + + feature outbound-bw { + description + "Indicates support for the outbound bandwidth in a VPN, + i.e., support for specifying the upload bandwidth from + the VPN site to the service provider network. Note that + the L3SM uses 'output' to identify the same feature. + That terminology should be deprecated in favor of the + terminology defined in this module."; + } + + /* + * Features related to security and resilience + */ + + feature encryption { + description + "Indicates support for encryption in the VPN."; + } + + feature fast-reroute { + description + "Indicates support for Fast Reroute (FRR) capabilities for + a VPN site."; + } + + /* + * Features related to advanced VPN options + */ + + feature external-connectivity { + description + "Indicates support for the VPN to provide external + connectivity (e.g., Internet, private or public cloud)."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks + (VPNs), Section 11"; + } + + feature extranet-vpn { + description + "Indicates support for extranet VPNs, i.e., the capability + of a VPN to access a list of other VPNs."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks + (VPNs), Section 1.1"; + } + + feature carriers-carrier { + description + "Indicates support for Carriers' Carriers in VPNs."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks + (VPNs), Section 9"; + } + + /* + * Identities related to address families + */ + + identity address-family { + description + "Defines a type for the address family."; + } + + identity ipv4 { + base address-family; + description + "Identity for an IPv4 address family."; + } + + identity ipv6 { + base address-family; + description + "Identity for an IPv6 address family."; + } + + identity dual-stack { + base address-family; + description + "Identity for IPv4 and IPv6 address families."; + } + + /* + * Identities related to VPN topology + */ + + identity vpn-topology { + description + "Base identity of the VPN topology."; + } + + identity any-to-any { + base vpn-topology; + description + "Identity for any-to-any VPN topology. All VPN sites + can communicate with each other without any restrictions."; + } + + identity hub-spoke { + base vpn-topology; + description + "Identity for Hub-and-Spoke VPN topology. All Spokes can + communicate with Hubs only and not with each other. Hubs + can communicate with each other."; + } + + identity hub-spoke-disjoint { + base vpn-topology; + description + "Identity for Hub-and-Spoke VPN topology where Hubs cannot + communicate with each other."; + } + + identity custom { + base vpn-topology; + description + "Identity for custom VPN topologies where the role of the + nodes is not strictly Hub or Spoke. The VPN topology is + controlled by the import/export policies. The custom + topology reflects more complex VPN nodes, such as a + VPN node that acts as a Hub for certain nodes and a Spoke + for others."; + } + + /* + * Identities related to network access types + */ + + identity site-network-access-type { + description + "Base identity for site network access types."; + } + + identity point-to-point { + base site-network-access-type; + description + "Point-to-point access type."; + } + + identity multipoint { + base site-network-access-type; + description + "Multipoint access type."; + } + + identity irb { + base site-network-access-type; + description + "Integrated Routing and Bridging (IRB). + Identity for pseudowire connections."; + } + + identity loopback { + base site-network-access-type; + description + "Loopback access type."; + } + + /* + * Identities related to operational and administrative status + */ + + identity operational-status { + description + "Base identity for operational status."; + } + + identity op-up { + base operational-status; + description + "Operational status is Up/Enabled."; + } + + identity op-down { + base operational-status; + description + "Operational status is Down/Disabled."; + } + + identity op-unknown { + base operational-status; + description + "Operational status is Unknown."; + } + + identity administrative-status { + description + "Base identity for administrative status."; + } + + identity admin-up { + base administrative-status; + description + "Administrative status is Up/Enabled."; + } + + identity admin-down { + base administrative-status; + description + "Administrative status is Down/Disabled."; + } + + identity admin-testing { + base administrative-status; + description + "Administrative status is Up for testing purposes."; + } + + identity admin-pre-deployment { + base administrative-status; + description + "Administrative status reflects a pre-deployment phase, + i.e., prior to the actual deployment of a service."; + } + + /* + * Identities related to site or node roles + */ + + identity role { + description + "Base identity of a site or node role."; + } + + identity any-to-any-role { + base role; + description + "Any-to-any role."; + } + + identity spoke-role { + base role; + description + "A node or a site is acting as a Spoke."; + } + + identity hub-role { + base role; + description + "A node or a site is acting as a Hub."; + } + + identity custom-role { + base role; + description + "VPN node with a custom or complex role in the VPN. For + some sources/destinations, it can behave as a Hub, but for + others, it can act as a Spoke, depending on the configured + policy."; + } + + /* + * Identities related to VPN service constraints + */ + + identity placement-diversity { + description + "Base identity for access placement constraints."; + } + + identity bearer-diverse { + base placement-diversity; + description + "Bearer diversity. + + The bearers should not use common elements."; + } + + identity pe-diverse { + base placement-diversity; + description + "PE diversity."; + } + + identity pop-diverse { + base placement-diversity; + description + "Point of Presence (POP) diversity."; + } + + identity linecard-diverse { + base placement-diversity; + description + "Linecard diversity."; + } + + identity same-pe { + base placement-diversity; + description + "Having sites connected on the same PE."; + } + + identity same-bearer { + base placement-diversity; + description + "Having sites connected using the same bearer."; + } + + /* + * Identities related to service types + */ + + identity service-type { + description + "Base identity for service types."; + } + + identity l3vpn { + base service-type; + description + "L3VPN service."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)"; + } + + identity vpls { + base service-type; + description + "Virtual Private LAN Service (VPLS)."; + reference + "RFC 4761: Virtual Private LAN Service (VPLS) Using BGP for + Auto-Discovery and Signaling + RFC 4762: Virtual Private LAN Service (VPLS) Using Label + Distribution Protocol (LDP) Signaling"; + } + + identity vpws { + base service-type; + description + "Virtual Private Wire Service (VPWS)."; + reference + "RFC 4664: Framework for Layer 2 Virtual Private Networks + (L2VPNs), Section 3.1.1"; + } + + identity vpws-evpn { + base service-type; + description + "Ethernet VPN (EVPN) used to support VPWS."; + reference + "RFC 8214: Virtual Private Wire Service Support in + Ethernet VPN"; + } + + identity pbb-evpn { + base service-type; + description + "Provider Backbone Bridging (PBB) EVPN service."; + reference + "RFC 7623: Provider Backbone Bridging Combined with + Ethernet VPN (PBB-EVPN)"; + } + + identity mpls-evpn { + base service-type; + description + "MPLS-based EVPN service."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN"; + } + + identity vxlan-evpn { + base service-type; + description + "VXLAN-based EVPN service."; + reference + "RFC 8365: A Network Virtualization Overlay Solution Using + Ethernet VPN (EVPN)"; + } + + /* + * Identities related to VPN signaling types + */ + + identity vpn-signaling-type { + description + "Base identity for VPN signaling types."; + } + + identity bgp-signaling { + base vpn-signaling-type; + description + "Layer 2 VPNs using BGP signaling."; + reference + "RFC 6624: Layer 2 Virtual Private Networks Using BGP for + Auto-Discovery and Signaling + RFC 7432: BGP MPLS-Based Ethernet VPN"; + } + + identity ldp-signaling { + base vpn-signaling-type; + description + "Targeted Label Distribution Protocol (LDP) signaling."; + reference + "RFC 5036: LDP Specification"; + } + + identity l2tp-signaling { + base vpn-signaling-type; + description + "Layer Two Tunneling Protocol (L2TP) signaling."; + reference + "RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)"; + } + + /* + * Identities related to routing protocols + */ + + identity routing-protocol-type { + description + "Base identity for routing protocol types."; + } + + identity static-routing { + base routing-protocol-type; + description + "Static routing protocol."; + } + + identity bgp-routing { + if-feature "rtg-bgp"; + base routing-protocol-type; + description + "BGP routing protocol."; + reference + "RFC 4271: A Border Gateway Protocol 4 (BGP-4)"; + } + + identity ospf-routing { + if-feature "rtg-ospf"; + base routing-protocol-type; + description + "OSPF routing protocol."; + reference + "RFC 4577: OSPF as the Provider/Customer Edge Protocol + for BGP/MPLS IP Virtual Private Networks (VPNs) + RFC 6565: OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol"; + } + + identity rip-routing { + if-feature "rtg-rip"; + base routing-protocol-type; + description + "RIP routing protocol."; + reference + "RFC 2453: RIP Version 2 + RFC 2080: RIPng for IPv6"; + } + + identity isis-routing { + if-feature "rtg-isis"; + base routing-protocol-type; + description + "IS-IS routing protocol."; + reference + "ISO10589: Information technology - Telecommunications and + information exchange between systems - + Intermediate System to Intermediate System + intra-domain routeing information exchange + protocol for use in conjunction with the protocol + for providing the connectionless-mode network + service (ISO 8473)"; + } + + identity vrrp-routing { + if-feature "rtg-vrrp"; + base routing-protocol-type; + description + "VRRP protocol. + + This is to be used when LANs are directly connected to + PEs."; + reference + "RFC 5798: Virtual Router Redundancy Protocol (VRRP) + Version 3 for IPv4 and IPv6"; + } + + identity direct-routing { + base routing-protocol-type; + description + "Direct routing. + + This is to be used when LANs are directly connected to PEs + and must be advertised in the VPN."; + } + + identity any-routing { + base routing-protocol-type; + description + "Any routing protocol. + + For example, this can be used to set policies that apply + to any routing protocol in place."; + } + + identity isis-level { + if-feature "rtg-isis"; + description + "Base identity for the IS-IS level."; + reference + "ISO10589: Information technology - Telecommunications and + information exchange between systems - + Intermediate System to Intermediate System + intra-domain routeing information exchange + protocol for use in conjunction with the protocol + for providing the connectionless-mode network + service (ISO 8473)"; + } + + identity level-1 { + base isis-level; + description + "IS-IS Level 1."; + } + + identity level-2 { + base isis-level; + description + "IS-IS Level 2."; + } + + identity level-1-2 { + base isis-level; + description + "IS-IS Levels 1 and 2."; + } + + identity bfd-session-type { + if-feature "bfd"; + description + "Base identity for the BFD session type."; + } + + identity classic-bfd { + base bfd-session-type; + description + "Classic BFD."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + identity s-bfd { + base bfd-session-type; + description + "Seamless BFD."; + reference + "RFC 7880: Seamless Bidirectional Forwarding Detection + (S-BFD)"; + } + + /* + * Identities related to route import and export policies + */ + + identity ie-type { + description + "Base identity for import/export routing profiles. + These profiles can be reused between VPN nodes."; + } + + identity import { + base ie-type; + description + "Import routing profile."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks + (VPNs), Section 4.3.1"; + } + + identity export { + base ie-type; + description + "Export routing profile."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks + (VPNs), Section 4.3.1"; + } + + identity import-export { + base ie-type; + description + "Import/export routing profile."; + } + + /* + * Identities related to bandwidth and QoS + */ + + identity bw-direction { + description + "Base identity for the bandwidth direction."; + } + + identity inbound-bw { + if-feature "inbound-bw"; + base bw-direction; + description + "Inbound bandwidth."; + } + + identity outbound-bw { + if-feature "outbound-bw"; + base bw-direction; + description + "Outbound bandwidth."; + } + + identity bw-type { + description + "Base identity for the bandwidth type."; + } + + identity bw-per-cos { + if-feature "qos"; + base bw-type; + description + "The bandwidth is per CoS."; + } + + identity bw-per-port { + base bw-type; + description + "The bandwidth is per a given site network access."; + } + + identity bw-per-site { + base bw-type; + description + "The bandwidth is per site. It is applicable to all the + site network accesses within a site."; + } + + identity bw-per-service { + base bw-type; + description + "The bandwidth is per VPN service."; + } + + identity qos-profile-direction { + if-feature "qos"; + description + "Base identity for the QoS profile direction."; + } + + identity site-to-wan { + base qos-profile-direction; + description + "From the customer site to the provider's network. + This is typically the CE-to-PE direction."; + } + + identity wan-to-site { + base qos-profile-direction; + description + "From the provider's network to the customer site. + This is typically the PE-to-CE direction."; + } + + identity both { + base qos-profile-direction; + description + "Both the WAN-to-site direction and the site-to-WAN + direction."; + } + + /* + * Identities related to underlay transport instances + */ + + identity transport-instance-type { + description + "Base identity for underlay transport instance types."; + } + + identity virtual-network { + base transport-instance-type; + description + "Virtual network."; + reference + "RFC 8453: Framework for Abstraction and Control of TE + Networks (ACTN)"; + } + + identity enhanced-vpn { + base transport-instance-type; + description + "Enhanced VPN (VPN+). VPN+ is an approach that is + based on existing VPN and Traffic Engineering (TE) + technologies but adds characteristics that specific + services require over and above classical VPNs."; + reference + "draft-ietf-teas-enhanced-vpn-09: + A Framework for Enhanced Virtual Private Network + (VPN+) Services"; + } + + identity ietf-network-slice { + base transport-instance-type; + description + "IETF network slice. An IETF network slice + is a logical network topology connecting a number of + endpoints using a set of shared or dedicated network + resources that are used to satisfy specific service + objectives."; + reference + "draft-ietf-teas-ietf-network-slices-05: + Framework for IETF Network Slices"; + } + + /* + * Identities related to protocol types. These types are + * typically used to identify the underlay transport. + */ + + identity protocol-type { + description + "Base identity for protocol types."; + } + + identity ip-in-ip { + base protocol-type; + description + "Transport is based on IP in IP."; + reference + "RFC 2003: IP Encapsulation within IP + RFC 2473: Generic Packet Tunneling in IPv6 Specification"; + } + + identity ip-in-ipv4 { + base ip-in-ip; + description + "Transport is based on IP over IPv4."; + reference + "RFC 2003: IP Encapsulation within IP"; + } + + identity ip-in-ipv6 { + base ip-in-ip; + description + "Transport is based on IP over IPv6."; + reference + "RFC 2473: Generic Packet Tunneling in IPv6 Specification"; + } + + identity gre { + base protocol-type; + description + "Transport is based on Generic Routing Encapsulation + (GRE)."; + reference + "RFC 1701: Generic Routing Encapsulation (GRE) + RFC 1702: Generic Routing Encapsulation over IPv4 networks + RFC 7676: IPv6 Support for Generic Routing Encapsulation + (GRE)"; + } + + identity gre-v4 { + base gre; + description + "Transport is based on GRE over IPv4."; + reference + "RFC 1702: Generic Routing Encapsulation over IPv4 + networks"; + } + + identity gre-v6 { + base gre; + description + "Transport is based on GRE over IPv6."; + reference + "RFC 7676: IPv6 Support for Generic Routing Encapsulation + (GRE)"; + } + + identity vxlan-trans { + base protocol-type; + description + "Transport is based on VXLANs."; + reference + "RFC 7348: Virtual eXtensible Local Area Network (VXLAN): + A Framework for Overlaying Virtualized Layer 2 + Networks over Layer 3 Networks"; + } + + identity geneve { + base protocol-type; + description + "Transport is based on Generic Network Virtualization + Encapsulation (Geneve)."; + reference + "RFC 8926: Geneve: Generic Network Virtualization + Encapsulation"; + } + + identity ldp { + base protocol-type; + description + "Transport is based on LDP."; + reference + "RFC 5036: LDP Specification"; + } + + identity mpls-in-udp { + base protocol-type; + description + "Transport is based on MPLS in UDP."; + reference + "RFC 7510: Encapsulating MPLS in UDP"; + } + + identity sr { + base protocol-type; + description + "Transport is based on Segment Routing (SR)."; + reference + "RFC 8660: Segment Routing with the MPLS Data Plane + RFC 8663: MPLS Segment Routing over IP + RFC 8754: IPv6 Segment Routing Header (SRH)"; + } + + identity sr-mpls { + base sr; + description + "Transport is based on SR with the MPLS data plane."; + reference + "RFC 8660: Segment Routing with the MPLS Data Plane"; + } + + identity srv6 { + base sr; + description + "Transport is based on SR over IPv6."; + reference + "RFC 8754: IPv6 Segment Routing Header (SRH)"; + } + + identity sr-mpls-over-ip { + base sr; + description + "Transport is based on SR over MPLS over IP."; + reference + "RFC 8663: MPLS Segment Routing over IP"; + } + + identity rsvp-te { + base protocol-type; + description + "Transport setup relies upon RSVP-TE."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity bgp-lu { + base protocol-type; + description + "Transport setup relies upon BGP-based labeled prefixes."; + reference + "RFC 8277: Using BGP to Bind MPLS Labels to Address Prefixes"; + } + + identity unknown { + base protocol-type; + description + "Unknown protocol type."; + } + + /* + * Identities related to encapsulation types + */ + + identity encapsulation-type { + description + "Base identity for encapsulation types."; + } + + identity priority-tagged { + base encapsulation-type; + description + "Priority-tagged interface."; + } + + identity dot1q { + if-feature "dot1q"; + base encapsulation-type; + description + "dot1Q encapsulation."; + } + + identity qinq { + if-feature "qinq"; + base encapsulation-type; + description + "QinQ encapsulation."; + } + + identity qinany { + if-feature "qinany"; + base encapsulation-type; + description + "QinAny encapsulation."; + } + + identity vxlan { + if-feature "vxlan"; + base encapsulation-type; + description + "VXLAN encapsulation."; + } + + identity ethernet-type { + base encapsulation-type; + description + "Ethernet encapsulation type."; + } + + identity vlan-type { + base encapsulation-type; + description + "VLAN encapsulation type."; + } + + identity untagged-int { + base encapsulation-type; + description + "Untagged interface type."; + } + + identity tagged-int { + base encapsulation-type; + description + "Tagged interface type."; + } + + identity lag-int { + if-feature "lag-interface"; + base encapsulation-type; + description + "LAG interface type."; + } + + /* + * Identities related to VLAN tags + */ + + identity tag-type { + description + "Base identity for VLAN tag types."; + } + + identity c-vlan { + base tag-type; + description + "Indicates a Customer VLAN (C-VLAN) tag, normally using + the 0x8100 Ethertype."; + } + + identity s-vlan { + base tag-type; + description + "Indicates a Service VLAN (S-VLAN) tag."; + } + + identity s-c-vlan { + base tag-type; + description + "Uses both an S-VLAN tag and a C-VLAN tag."; + } + + /* + * Identities related to VXLANs + */ + + identity vxlan-peer-mode { + if-feature "vxlan"; + description + "Base identity for VXLAN peer modes."; + } + + identity static-mode { + base vxlan-peer-mode; + description + "VXLAN access in the static mode."; + } + + identity bgp-mode { + base vxlan-peer-mode; + description + "VXLAN access by BGP EVPN learning."; + } + + /* + * Identities related to multicast + */ + + identity multicast-gp-address-mapping { + if-feature "multicast"; + description + "Base identity for multicast group mapping types."; + } + + identity static-mapping { + base multicast-gp-address-mapping; + description + "Static mapping, i.e., an interface is attached to the + multicast group as a static member."; + } + + identity dynamic-mapping { + base multicast-gp-address-mapping; + description + "Dynamic mapping, i.e., an interface is added to the + multicast group as a result of snooping."; + } + + identity multicast-tree-type { + if-feature "multicast"; + description + "Base identity for multicast tree types."; + } + + identity ssm-tree-type { + base multicast-tree-type; + description + "Source-Specific Multicast (SSM) tree type."; + } + + identity asm-tree-type { + base multicast-tree-type; + description + "Any-Source Multicast (ASM) tree type."; + } + + identity bidir-tree-type { + base multicast-tree-type; + description + "Bidirectional tree type."; + } + + identity multicast-rp-discovery-type { + if-feature "multicast"; + description + "Base identity for Rendezvous Point (RP) discovery types."; + } + + identity auto-rp { + base multicast-rp-discovery-type; + description + "Auto-RP discovery type."; + } + + identity static-rp { + base multicast-rp-discovery-type; + description + "Static type."; + } + + identity bsr-rp { + base multicast-rp-discovery-type; + description + "Bootstrap Router (BSR) discovery type."; + } + + identity group-management-protocol { + if-feature "multicast"; + description + "Base identity for multicast group management protocols."; + } + + identity igmp-proto { + base group-management-protocol; + description + "IGMP."; + reference + "RFC 1112: Host Extensions for IP Multicasting + RFC 2236: Internet Group Management Protocol, Version 2 + RFC 3376: Internet Group Management Protocol, Version 3"; + } + + identity mld-proto { + base group-management-protocol; + description + "MLD."; + reference + "RFC 2710: Multicast Listener Discovery (MLD) for IPv6 + RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) + for IPv6"; + } + + identity pim-proto { + if-feature "pim"; + base routing-protocol-type; + description + "PIM."; + reference + "RFC 7761: Protocol Independent Multicast - Sparse Mode + (PIM-SM): Protocol Specification (Revised)"; + } + + identity igmp-version { + if-feature "igmp"; + description + "Base identity for indicating the IGMP version."; + } + + identity igmpv1 { + base igmp-version; + description + "IGMPv1."; + reference + "RFC 1112: Host Extensions for IP Multicasting"; + } + + identity igmpv2 { + base igmp-version; + description + "IGMPv2."; + reference + "RFC 2236: Internet Group Management Protocol, Version 2"; + } + + identity igmpv3 { + base igmp-version; + description + "IGMPv3."; + reference + "RFC 3376: Internet Group Management Protocol, Version 3"; + } + + identity mld-version { + if-feature "mld"; + description + "Base identity for indicating the MLD version."; + } + + identity mldv1 { + base mld-version; + description + "MLDv1."; + reference + "RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity mldv2 { + base mld-version; + description + "MLDv2."; + reference + "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) + for IPv6"; + } + + /* + * Identities related to traffic types + */ + + identity tf-type { + description + "Base identity for traffic types."; + } + + identity multicast-traffic { + base tf-type; + description + "Multicast traffic."; + } + + identity broadcast-traffic { + base tf-type; + description + "Broadcast traffic."; + } + + identity unknown-unicast-traffic { + base tf-type; + description + "Unknown unicast traffic."; + } + + /* + * Identities related to customer applications + */ + + identity customer-application { + description + "Base identity for customer applications."; + } + + identity web { + base customer-application; + description + "Web applications (e.g., HTTP, HTTPS)."; + } + + identity mail { + base customer-application; + description + "Mail application."; + } + + identity file-transfer { + base customer-application; + description + "File transfer application (e.g., FTP, Secure FTP (SFTP))."; + } + + identity database { + base customer-application; + description + "Database application."; + } + + identity social { + base customer-application; + description + "Social-network application."; + } + + identity games { + base customer-application; + description + "Gaming application."; + } + + identity p2p { + base customer-application; + description + "Peer-to-peer application."; + } + + identity network-management { + base customer-application; + description + "Management application (e.g., Telnet, syslog, SNMP)."; + } + + identity voice { + base customer-application; + description + "Voice application."; + } + + identity video { + base customer-application; + description + "Video-conference application."; + } + + identity embb { + base customer-application; + description + "Enhanced Mobile Broadband (eMBB) application. + Note that eMBB applications demand network performance + with a wide variety of such characteristics as data rate, + latency, loss rate, reliability, and many other + parameters."; + } + + identity urllc { + base customer-application; + description + "Ultra-Reliable and Low Latency Communications (URLLC) + application. Note that URLLC applications demand + network performance with a wide variety of such + characteristics as latency, reliability, and many other + parameters."; + } + + identity mmtc { + base customer-application; + description + "Massive Machine Type Communications (mMTC) application. + Note that mMTC applications demand network performance + with a wide variety of such characteristics as data rate, + latency, loss rate, reliability, and many other + parameters."; + } + + /* + * Identities related to service bundling + */ + + identity bundling-type { + description + "The base identity for the bundling type. It supports a + subset or all Customer Edge VLAN IDs (CE-VLAN IDs) + associated with an L2VPN service."; + } + + identity multi-svc-bundling { + base bundling-type; + description + "Multi-service bundling, i.e., multiple CE-VLAN IDs + can be associated with an L2VPN service at a site."; + } + + identity one2one-bundling { + base bundling-type; + description + "One-to-one service bundling, i.e., each L2VPN can + be associated with only one CE-VLAN ID at a site."; + } + + identity all2one-bundling { + base bundling-type; + description + "All-to-one bundling, i.e., all CE-VLAN IDs are mapped + to one L2VPN service."; + } + + /* + * Identities related to Ethernet services + */ + + identity control-mode { + description + "Base identity for the type of control mode used with the + Layer 2 Control Protocol (L2CP)."; + } + + identity peer { + base control-mode; + description + "'peer' mode, i.e., participate in the protocol towards + the CE. Peering is common for the Link Aggregation Control + Protocol (LACP) and the Ethernet Local Management Interface + (E-LMI) and, occasionally, for the Link Layer Discovery + Protocol (LLDP). For VPLSs and VPWSs, the subscriber can + also request that the peer service provider enable + spanning tree."; + } + + identity tunnel { + base control-mode; + description + "'tunnel' mode, i.e., pass to the egress or destination + site. For Ethernet Private Lines (EPLs), the expectation + is that L2CP frames are tunneled."; + } + + identity discard { + base control-mode; + description + "'Discard' mode, i.e., discard the frame."; + } + + identity neg-mode { + description + "Base identity for the type of negotiation mode."; + } + + identity full-duplex { + base neg-mode; + description + "Full-duplex negotiation mode."; + } + + identity auto-neg { + base neg-mode; + description + "Auto-negotiation mode."; + } + + /******** VPN-related type ********/ + + typedef vpn-id { + type string; + description + "Defines an identifier that is used with a VPN module. + For example, this can be a service identifier, a node + identifier, etc."; + } + + /******* VPN-related reusable groupings *******/ + + grouping vpn-description { + description + "Provides common VPN information."; + leaf vpn-id { + type vpn-common:vpn-id; + description + "A VPN identifier that uniquely identifies a VPN. + This identifier has a local meaning, e.g., within + a service provider network."; + } + leaf vpn-name { + type string; + description + "Used to associate a name with the service + in order to facilitate the identification of + the service."; + } + leaf vpn-description { + type string; + description + "Textual description of a VPN."; + } + leaf customer-name { + type string; + description + "Name of the customer that actually uses the VPN."; + } + } + + grouping vpn-profile-cfg { + description + "Grouping for VPN profile configuration."; + container valid-provider-identifiers { + description + "Container for valid provider profile identifiers."; + list external-connectivity-identifier { + if-feature "external-connectivity"; + key "id"; + description + "List of profile identifiers that uniquely identify + profiles governing how external connectivity is + provided to a VPN. A profile indicates the type of + external connectivity (Internet, cloud, etc.), the + sites/nodes that are associated with a connectivity + profile, etc. A profile can also indicate filtering + rules and/or address translation rules. Such features + may involve PE, P, or dedicated nodes as a function + of the deployment."; + leaf id { + type string; + description + "Identification of an external connectivity profile. + The profile only has significance within the service + provider's administrative domain."; + } + } + list encryption-profile-identifier { + key "id"; + description + "List of encryption profile identifiers."; + leaf id { + type string; + description + "Identification of the encryption profile to be used. + The profile only has significance within the service + provider's administrative domain."; + } + } + list qos-profile-identifier { + key "id"; + description + "List of QoS profile identifiers."; + leaf id { + type string; + description + "Identification of the QoS profile to be used. The + profile only has significance within the service + provider's administrative domain."; + } + } + list bfd-profile-identifier { + key "id"; + description + "List of BFD profile identifiers."; + leaf id { + type string; + description + "Identification of the BFD profile to be used. The + profile only has significance within the service + provider's administrative domain."; + } + } + list forwarding-profile-identifier { + key "id"; + description + "List of forwarding profile identifiers."; + leaf id { + type string; + description + "Identification of the forwarding profile to be used. + The profile only has significance within the service + provider's administrative domain."; + } + } + list routing-profile-identifier { + key "id"; + description + "List of routing profile identifiers."; + leaf id { + type string; + description + "Identification of the routing profile to be used by + the routing protocols within sites, VPN network + accesses, or VPN nodes for referring to VRF's + import/export policies. + + The profile only has significance within the service + provider's administrative domain."; + } + } + nacm:default-deny-write; + } + } + + grouping oper-status-timestamp { + description + "This grouping defines some operational parameters for the + service."; + leaf status { + type identityref { + base operational-status; + } + config false; + description + "Operational status."; + } + leaf last-change { + type yang:date-and-time; + config false; + description + "Indicates the actual date and time of the service status + change."; + } + } + + grouping service-status { + description + "Service status grouping."; + container status { + description + "Service status."; + container admin-status { + description + "Administrative service status."; + leaf status { + type identityref { + base administrative-status; + } + description + "Administrative service status."; + } + leaf last-change { + type yang:date-and-time; + description + "Indicates the actual date and time of the service + status change."; + } + } + container oper-status { + config false; + description + "Operational service status."; + uses oper-status-timestamp; + } + } + } + + grouping underlay-transport { + description + "This grouping defines the type of underlay transport for + the VPN service or how that underlay is set. It can + include an identifier for an abstract transport instance to + which the VPN is grafted or indicate a technical + implementation that is expressed as an ordered list of + protocols."; + choice type { + description + "A choice based on the type of underlay transport + constraints."; + case abstract { + description + "Indicates that the transport constraint is an abstract + concept."; + leaf transport-instance-id { + type string; + description + "An optional identifier of the abstract transport + instance."; + } + leaf instance-type { + type identityref { + base transport-instance-type; + } + description + "Indicates a transport instance type. For example, + it can be a VPN+, an IETF network slice, a virtual + network, etc."; + } + } + case protocol { + description + "Indicates a list of protocols."; + leaf-list protocol { + type identityref { + base protocol-type; + } + ordered-by user; + description + "A client-ordered list of transport protocols."; + } + } + } + } + + grouping vpn-route-targets { + description + "A grouping that specifies Route Target (RT) import/export + rules used in a BGP-enabled VPN."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) + RFC 4664: Framework for Layer 2 Virtual Private Networks + (L2VPNs)"; + list vpn-target { + key "id"; + description + "RTs. AND/OR operations may be defined based on the + assigned RTs."; + leaf id { + type uint8; + description + "Identifies each VPN target."; + } + list route-targets { + key "route-target"; + description + "List of RTs."; + leaf route-target { + type rt-types:route-target; + description + "Conveys an RT value."; + } + } + leaf route-target-type { + type rt-types:route-target-type; + mandatory true; + description + "Import/export type of the RT."; + } + } + container vpn-policies { + description + "VPN service policies. 'vpn-policies' contains references + to the import and export policies to be associated with + the VPN service."; + leaf import-policy { + type string; + description + "Identifies the import policy."; + } + leaf export-policy { + type string; + description + "Identifies the export policy."; + } + } + } + + grouping route-distinguisher { + description + "Grouping for Route Distinguishers (RDs)."; + choice rd-choice { + description + "RD choice between several options for providing the RD + value."; + case directly-assigned { + description + "Explicitly assigns an RD value."; + leaf rd { + type rt-types:route-distinguisher; + description + "Indicates an RD value that is explicitly assigned."; + } + } + case directly-assigned-suffix { + description + "The value of the Assigned Number subfield of the RD. + The Administrator subfield of the RD will be + based on other configuration information such as the + Router ID or Autonomous System Number (ASN)."; + leaf rd-suffix { + type uint16; + description + "Indicates the value of the Assigned Number + subfield that is explicitly assigned."; + } + } + case auto-assigned { + description + "The RD is auto-assigned."; + container rd-auto { + description + "The RD is auto-assigned."; + choice auto-mode { + description + "Indicates the auto-assignment mode. The RD can be + automatically assigned with or without + indicating a pool from which the RD should be + taken. + + For both cases, the server will auto-assign an RD + value 'auto-assigned-rd' and use that value + operationally."; + case from-pool { + leaf rd-pool-name { + type string; + description + "The auto-assignment will be made from the pool + identified by 'rd-pool-name'."; + } + } + case full-auto { + leaf auto { + type empty; + description + "Indicates that an RD is fully auto-assigned."; + } + } + } + leaf auto-assigned-rd { + type rt-types:route-distinguisher; + config false; + description + "The value of the auto-assigned RD."; + } + } + } + case auto-assigned-suffix { + description + "The value of the Assigned Number subfield will be + auto-assigned. The Administrator subfield will be + based on other configuration information such as the + Router ID or ASN."; + container rd-auto-suffix { + description + "The Assigned Number subfield is auto-assigned."; + choice auto-mode { + description + "Indicates the auto-assignment mode of the + Assigned Number subfield. This number can be + automatically assigned with or without indicating a + pool from which the value should be taken. + + For both cases, the server will auto-assign + 'auto-assigned-rd-suffix' and use that value to + build the RD that will be used operationally."; + case from-pool { + leaf rd-pool-name { + type string; + description + "The assignment will be made from the pool + identified by 'rd-pool-name'."; + } + } + case full-auto { + leaf auto { + type empty; + description + "Indicates that the Assigned Number subfield is + fully auto-assigned."; + } + } + } + leaf auto-assigned-rd-suffix { + type uint16; + config false; + description + "Includes the value of the Assigned Number subfield + that is auto-assigned."; + } + } + } + case no-rd { + description + "Uses the 'empty' type to indicate that the RD has no + value and is not to be auto-assigned."; + leaf no-rd { + type empty; + description + "No RD is assigned."; + } + } + } + } + + grouping vpn-components-group { + description + "Grouping definition to assign group IDs to associate + VPN nodes, sites, or network accesses."; + container groups { + description + "Lists the groups to which a VPN node, a site, or a + network access belongs."; + list group { + key "group-id"; + description + "List of group IDs."; + leaf group-id { + type string; + description + "The group ID to which a VPN node, a site, or a + network access belongs."; + } + } + } + } + + grouping placement-constraints { + description + "Constraints related to placement of a network access."; + list constraint { + key "constraint-type"; + description + "List of constraints."; + leaf constraint-type { + type identityref { + base placement-diversity; + } + description + "Diversity constraint type."; + } + container target { + description + "The constraint will apply against this list of + groups."; + choice target-flavor { + description + "Choice for the group definition."; + case id { + list group { + key "group-id"; + description + "List of groups."; + leaf group-id { + type string; + description + "The constraint will apply against this + particular group ID."; + } + } + } + case all-accesses { + leaf all-other-accesses { + type empty; + description + "The constraint will apply against all other + network accesses of a site."; + } + } + case all-groups { + leaf all-other-groups { + type empty; + description + "The constraint will apply against all other + groups managed by the customer."; + } + } + } + } + } + } + + grouping ports { + description + "Choice of specifying source or destination port numbers."; + choice source-port { + description + "Choice of specifying the source port or referring to a + group of source port numbers."; + container source-port-range-or-operator { + description + "Source port definition."; + uses packet-fields:port-range-or-operator; + } + } + choice destination-port { + description + "Choice of specifying a destination port or referring to a + group of destination port numbers."; + container destination-port-range-or-operator { + description + "Destination port definition."; + uses packet-fields:port-range-or-operator; + } + } + } + + grouping qos-classification-policy { + description + "Configuration of the traffic classification policy."; + list rule { + key "id"; + ordered-by user; + description + "List of marking rules."; + leaf id { + type string; + description + "An identifier of the QoS classification policy rule."; + } + choice match-type { + default "match-flow"; + description + "Choice for classification."; + case match-flow { + choice l3 { + description + "Either IPv4 or IPv6."; + container ipv4 { + description + "Rule set that matches the IPv4 header."; + uses packet-fields:acl-ip-header-fields; + uses packet-fields:acl-ipv4-header-fields; + } + container ipv6 { + description + "Rule set that matches the IPv6 header."; + uses packet-fields:acl-ip-header-fields; + uses packet-fields:acl-ipv6-header-fields; + } + } + choice l4 { + description + "Includes Layer-4-specific information. + This version focuses on TCP and UDP."; + container tcp { + description + "Rule set that matches the TCP header."; + uses packet-fields:acl-tcp-header-fields; + uses ports; + } + container udp { + description + "Rule set that matches the UDP header."; + uses packet-fields:acl-udp-header-fields; + uses ports; + } + } + } + case match-application { + leaf match-application { + type identityref { + base customer-application; + } + description + "Defines the application to match."; + } + } + } + leaf target-class-id { + type string; + description + "Identification of the class of service. This + identifier is internal to the administration."; + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-yang-types@2013-07-15.yang new file mode 100644 index 000000000..956562a7b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/yang/ietf-yang-types@2013-07-15.yang @@ -0,0 +1,475 @@ + module ietf-yang-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; + prefix "yang"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of counter and gauge types ***/ + + typedef counter32 { + type uint32; + description + "The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter32 { + type yang:counter32; + default "0"; + description + "The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2."; + reference + "RFC 4502: Remote Network Monitoring Management Information + Base Version 2"; + } + + typedef counter64 { + type uint64; + description + "The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter64 { + type yang:counter64; + default "0"; + description + "The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2."; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + typedef gauge32 { + type uint32; + description + "The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef gauge64 { + type uint64; + description + "The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856"; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + /*** collection of identifier-related types ***/ + + typedef object-identifier { + type string { + pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + + '(\.(0|([1-9]\d*)))*'; + } + description + "The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifiers. The pattern + captures these restrictions. + + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type; the object-identifier-128 type SHOULD be + used instead."; + reference + "ISO9834-1: Information technology -- Open Systems + Interconnection -- Procedures for the operation of OSI + Registration Authorities: General procedures and top + arcs of the ASN.1 Object Identifier tree"; + } + + typedef object-identifier-128 { + type object-identifier { + pattern '\d*(\.\d*){1,127}'; + } + description + "This type represents object-identifiers restricted to 128 + sub-identifiers. + + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef yang-identifier { + type string { + length "1..max"; + pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; + pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; + } + description + "A YANG identifier string as defined by the 'identifier' + rule in Section 12 of RFC 6020. An identifier must + start with an alphabetic character or an underscore + followed by an arbitrary sequence of alphabetic or + numeric characters, underscores, hyphens, or dots. + + A YANG identifier MUST NOT start with any possible + combination of the lowercase or uppercase character + sequence 'xml'."; + reference + "RFC 6020: YANG - A Data Modeling Language for the Network + Configuration Protocol (NETCONF)"; + } + + /*** collection of types related to date and time***/ + + typedef date-and-time { + type string { + pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + + '(Z|[\+\-]\d{2}:\d{2})'; + } + description + "The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + + (a) The date-and-time type does not allow negative years. + + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z + all represent the same time zone in dateTime. + + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using + the time-offset 'Z'. + + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually + referring to the notion of local time) uses the time-offset + -00:00."; + reference + "RFC 3339: Date and Time on the Internet: Timestamps + RFC 2579: Textual Conventions for SMIv2 + XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; + } + + typedef timeticks { + type uint32; + description + "The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef timestamp { + type yang:timeticks; + description + "The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence + happened. The specific occurrence must be defined in the + description of any schema node defined using this type. When + the specific occurrence occurred prior to the last time the + associated timeticks attribute was zero, then the timestamp + value is zero. Note that this requires all timestamp values + to be reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + + The associated timeticks schema node must be specified + in the description of any schema node using this type. + + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of generic address types ***/ + + typedef phys-address { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + + description + "Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + typedef mac-address { + type string { + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; + } + description + "The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2."; + reference + "IEEE 802: IEEE Standard for Local and Metropolitan Area + Networks: Overview and Architecture + RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of XML-specific types ***/ + + typedef xpath1.0 { + type string; + description + "This type represents an XPATH 1.0 expression. + + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated."; + reference + "XPATH: XML Path Language (XPath) Version 1.0"; + } + + /*** collection of string types ***/ + + typedef hex-string { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + + description + "A hexadecimal string with octets represented as hex digits + separated by colons. The canonical representation uses + lowercase characters."; + } + + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + + The following is an example of a UUID in string representation: + f81d4fae-7dec-11d0-a765-00a0c91e6bf6 + "; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + + typedef dotted-quad { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; + } + description + "An unsigned 32-bit number expressed in the dotted-quad + notation, i.e., four octets written as decimal numbers + and separated with the '.' (full stop) character."; + } + } diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java index d41b80f1d..9414c346d 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java @@ -482,6 +482,141 @@ public final class ContextOuterClass { } } + /** + * Protobuf enum {@code context.LinkTypeEnum} + */ + public enum LinkTypeEnum implements com.google.protobuf.ProtocolMessageEnum { + + /** + * LINKTYPE_UNKNOWN = 0; + */ + LINKTYPE_UNKNOWN(0), + /** + * LINKTYPE_COPPER = 1; + */ + LINKTYPE_COPPER(1), + /** + * LINKTYPE_VIRTUAL_COPPER = 2; + */ + LINKTYPE_VIRTUAL_COPPER(2), + /** + * LINKTYPE_OPTICAL = 3; + */ + LINKTYPE_OPTICAL(3), + /** + * LINKTYPE_VIRTUAL_OPTICAL = 4; + */ + LINKTYPE_VIRTUAL_OPTICAL(4), + UNRECOGNIZED(-1); + + /** + * LINKTYPE_UNKNOWN = 0; + */ + public static final int LINKTYPE_UNKNOWN_VALUE = 0; + + /** + * LINKTYPE_COPPER = 1; + */ + public static final int LINKTYPE_COPPER_VALUE = 1; + + /** + * LINKTYPE_VIRTUAL_COPPER = 2; + */ + public static final int LINKTYPE_VIRTUAL_COPPER_VALUE = 2; + + /** + * LINKTYPE_OPTICAL = 3; + */ + public static final int LINKTYPE_OPTICAL_VALUE = 3; + + /** + * LINKTYPE_VIRTUAL_OPTICAL = 4; + */ + public static final int LINKTYPE_VIRTUAL_OPTICAL_VALUE = 4; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static LinkTypeEnum valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static LinkTypeEnum forNumber(int value) { + switch(value) { + case 0: + return LINKTYPE_UNKNOWN; + case 1: + return LINKTYPE_COPPER; + case 2: + return LINKTYPE_VIRTUAL_COPPER; + case 3: + return LINKTYPE_OPTICAL; + case 4: + return LINKTYPE_VIRTUAL_OPTICAL; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { + + public LinkTypeEnum findValueByNumber(int number) { + return LinkTypeEnum.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3); + } + + private static final LinkTypeEnum[] VALUES = values(); + + public static LinkTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private LinkTypeEnum(int value) { + this.value = value; + } + } + /** * Protobuf enum {@code context.ServiceTypeEnum} */ @@ -628,7 +763,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4); } private static final ServiceTypeEnum[] VALUES = values(); @@ -774,7 +909,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5); } private static final ServiceStatusEnum[] VALUES = values(); @@ -920,7 +1055,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6); } private static final SliceStatusEnum[] VALUES = values(); @@ -1037,7 +1172,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7); } private static final ConfigActionEnum[] VALUES = values(); @@ -1154,7 +1289,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8); } private static final ConstraintActionEnum[] VALUES = values(); @@ -1333,7 +1468,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(9); } private static final IsolationLevelEnum[] VALUES = values(); @@ -8814,6 +8949,31 @@ public final class ContextOuterClass { * repeated .context.LinkId link_ids = 4; */ context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + java.util.List getOpticalLinkIdsList(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + context.ContextOuterClass.LinkId getOpticalLinkIds(int index); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + int getOpticalLinkIdsCount(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + java.util.List getOpticalLinkIdsOrBuilderList(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index); } /** @@ -8833,6 +8993,7 @@ public final class ContextOuterClass { name_ = ""; deviceIds_ = java.util.Collections.emptyList(); linkIds_ = java.util.Collections.emptyList(); + opticalLinkIds_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -9008,6 +9169,51 @@ public final class ContextOuterClass { return linkIds_.get(index); } + public static final int OPTICAL_LINK_IDS_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private java.util.List opticalLinkIds_; + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinkIdsList() { + return opticalLinkIds_; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinkIdsOrBuilderList() { + return opticalLinkIds_; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public int getOpticalLinkIdsCount() { + return opticalLinkIds_.size(); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) { + return opticalLinkIds_.get(index); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) { + return opticalLinkIds_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -9035,6 +9241,9 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { output.writeMessage(4, linkIds_.get(i)); } + for (int i = 0; i < opticalLinkIds_.size(); i++) { + output.writeMessage(5, opticalLinkIds_.get(i)); + } getUnknownFields().writeTo(output); } @@ -9056,6 +9265,9 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i)); } + for (int i = 0; i < opticalLinkIds_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinkIds_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -9082,6 +9294,8 @@ public final class ContextOuterClass { return false; if (!getLinkIdsList().equals(other.getLinkIdsList())) return false; + if (!getOpticalLinkIdsList().equals(other.getOpticalLinkIdsList())) + return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -9108,6 +9322,10 @@ public final class ContextOuterClass { hash = (37 * hash) + LINK_IDS_FIELD_NUMBER; hash = (53 * hash) + getLinkIdsList().hashCode(); } + if (getOpticalLinkIdsCount() > 0) { + hash = (37 * hash) + OPTICAL_LINK_IDS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinkIdsList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -9232,6 +9450,13 @@ public final class ContextOuterClass { linkIdsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIds_ = java.util.Collections.emptyList(); + } else { + opticalLinkIds_ = null; + opticalLinkIdsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -9284,6 +9509,15 @@ public final class ContextOuterClass { } else { result.linkIds_ = linkIdsBuilder_.build(); } + if (opticalLinkIdsBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + opticalLinkIds_ = java.util.Collections.unmodifiableList(opticalLinkIds_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.opticalLinkIds_ = opticalLinkIds_; + } else { + result.opticalLinkIds_ = opticalLinkIdsBuilder_.build(); + } } private void buildPartial0(context.ContextOuterClass.Topology result) { @@ -9365,6 +9599,30 @@ public final class ContextOuterClass { } } } + if (opticalLinkIdsBuilder_ == null) { + if (!other.opticalLinkIds_.isEmpty()) { + if (opticalLinkIds_.isEmpty()) { + opticalLinkIds_ = other.opticalLinkIds_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.addAll(other.opticalLinkIds_); + } + onChanged(); + } + } else { + if (!other.opticalLinkIds_.isEmpty()) { + if (opticalLinkIdsBuilder_.isEmpty()) { + opticalLinkIdsBuilder_.dispose(); + opticalLinkIdsBuilder_ = null; + opticalLinkIds_ = other.opticalLinkIds_; + bitField0_ = (bitField0_ & ~0x00000010); + opticalLinkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinkIdsFieldBuilder() : null; + } else { + opticalLinkIdsBuilder_.addAllMessages(other.opticalLinkIds_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -9426,6 +9684,18 @@ public final class ContextOuterClass { break; } // case 34 + case 42: + { + context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(m); + } else { + opticalLinkIdsBuilder_.addMessage(m); + } + break; + } + // case 42 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -10116,6 +10386,243 @@ public final class ContextOuterClass { return linkIdsBuilder_; } + private java.util.List opticalLinkIds_ = java.util.Collections.emptyList(); + + private void ensureOpticalLinkIdsIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + opticalLinkIds_ = new java.util.ArrayList(opticalLinkIds_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinkIdsBuilder_; + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsList() { + if (opticalLinkIdsBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinkIds_); + } else { + return opticalLinkIdsBuilder_.getMessageList(); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public int getOpticalLinkIdsCount() { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.size(); + } else { + return opticalLinkIdsBuilder_.getCount(); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.get(index); + } else { + return opticalLinkIdsBuilder_.getMessage(index); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.set(index, value); + onChanged(); + } else { + opticalLinkIdsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.set(index, builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(value); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(index, value); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addAllOpticalLinkIds(java.lang.Iterable values) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinkIds_); + onChanged(); + } else { + opticalLinkIdsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder clearOpticalLinkIds() { + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + opticalLinkIdsBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder removeOpticalLinkIds(int index) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.remove(index); + onChanged(); + } else { + opticalLinkIdsBuilder_.remove(index); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder getOpticalLinkIdsBuilder(int index) { + return getOpticalLinkIdsFieldBuilder().getBuilder(index); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.get(index); + } else { + return opticalLinkIdsBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsOrBuilderList() { + if (opticalLinkIdsBuilder_ != null) { + return opticalLinkIdsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinkIds_); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder() { + return getOpticalLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance()); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder(int index) { + return getOpticalLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance()); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsBuilderList() { + return getOpticalLinkIdsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinkIdsFieldBuilder() { + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinkIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); + opticalLinkIds_ = null; + } + return opticalLinkIdsBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -10253,6 +10760,31 @@ public final class ContextOuterClass { * repeated .context.Link links = 4; */ context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + java.util.List getOpticalLinksList(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + context.ContextOuterClass.OpticalLink getOpticalLinks(int index); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + int getOpticalLinksCount(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + java.util.List getOpticalLinksOrBuilderList(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index); } /** @@ -10272,6 +10804,7 @@ public final class ContextOuterClass { name_ = ""; devices_ = java.util.Collections.emptyList(); links_ = java.util.Collections.emptyList(); + opticalLinks_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -10447,6 +10980,51 @@ public final class ContextOuterClass { return links_.get(index); } + public static final int OPTICAL_LINKS_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private java.util.List opticalLinks_; + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinksList() { + return opticalLinks_; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinksOrBuilderList() { + return opticalLinks_; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public int getOpticalLinksCount() { + return opticalLinks_.size(); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + return opticalLinks_.get(index); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + return opticalLinks_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -10474,6 +11052,9 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { output.writeMessage(4, links_.get(i)); } + for (int i = 0; i < opticalLinks_.size(); i++) { + output.writeMessage(5, opticalLinks_.get(i)); + } getUnknownFields().writeTo(output); } @@ -10495,6 +11076,9 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i)); } + for (int i = 0; i < opticalLinks_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinks_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -10521,6 +11105,8 @@ public final class ContextOuterClass { return false; if (!getLinksList().equals(other.getLinksList())) return false; + if (!getOpticalLinksList().equals(other.getOpticalLinksList())) + return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -10547,6 +11133,10 @@ public final class ContextOuterClass { hash = (37 * hash) + LINKS_FIELD_NUMBER; hash = (53 * hash) + getLinksList().hashCode(); } + if (getOpticalLinksCount() > 0) { + hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinksList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -10671,6 +11261,13 @@ public final class ContextOuterClass { linksBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + } else { + opticalLinks_ = null; + opticalLinksBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -10723,6 +11320,15 @@ public final class ContextOuterClass { } else { result.links_ = linksBuilder_.build(); } + if (opticalLinksBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.opticalLinks_ = opticalLinks_; + } else { + result.opticalLinks_ = opticalLinksBuilder_.build(); + } } private void buildPartial0(context.ContextOuterClass.TopologyDetails result) { @@ -10804,6 +11410,30 @@ public final class ContextOuterClass { } } } + if (opticalLinksBuilder_ == null) { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinks_.isEmpty()) { + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureOpticalLinksIsMutable(); + opticalLinks_.addAll(other.opticalLinks_); + } + onChanged(); + } + } else { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinksBuilder_.isEmpty()) { + opticalLinksBuilder_.dispose(); + opticalLinksBuilder_ = null; + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000010); + opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null; + } else { + opticalLinksBuilder_.addAllMessages(other.opticalLinks_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -10865,6 +11495,18 @@ public final class ContextOuterClass { break; } // case 34 + case 42: + { + context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry); + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(m); + } else { + opticalLinksBuilder_.addMessage(m); + } + break; + } + // case 42 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -11555,6 +12197,243 @@ public final class ContextOuterClass { return linksBuilder_; } + private java.util.List opticalLinks_ = java.util.Collections.emptyList(); + + private void ensureOpticalLinksIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + opticalLinks_ = new java.util.ArrayList(opticalLinks_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinksBuilder_; + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksList() { + if (opticalLinksBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinks_); + } else { + return opticalLinksBuilder_.getMessageList(); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public int getOpticalLinksCount() { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.size(); + } else { + return opticalLinksBuilder_.getCount(); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessage(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, value); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addAllOpticalLinks(java.lang.Iterable values) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_); + onChanged(); + } else { + opticalLinksBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder clearOpticalLinks() { + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + opticalLinksBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder removeOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.remove(index); + onChanged(); + } else { + opticalLinksBuilder_.remove(index); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().getBuilder(index); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksOrBuilderList() { + if (opticalLinksBuilder_ != null) { + return opticalLinksBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinks_); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() { + return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksBuilderList() { + return getOpticalLinksFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinksFieldBuilder() { + if (opticalLinksBuilder_ == null) { + opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinks_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); + opticalLinks_ = null; + } + return opticalLinksBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -23249,6 +24128,18 @@ public final class ContextOuterClass { * .context.LinkAttributes attributes = 4; */ context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder(); + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The enum numeric value on the wire for linkType. + */ + int getLinkTypeValue(); + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The linkType. + */ + context.ContextOuterClass.LinkTypeEnum getLinkType(); } /** @@ -23267,6 +24158,7 @@ public final class ContextOuterClass { private Link() { name_ = ""; linkEndpointIds_ = java.util.Collections.emptyList(); + linkType_ = 0; } @java.lang.Override @@ -23427,6 +24319,29 @@ public final class ContextOuterClass { return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_; } + public static final int LINK_TYPE_FIELD_NUMBER = 5; + + private int linkType_ = 0; + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The enum numeric value on the wire for linkType. + */ + @java.lang.Override + public int getLinkTypeValue() { + return linkType_; + } + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The linkType. + */ + @java.lang.Override + public context.ContextOuterClass.LinkTypeEnum getLinkType() { + context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_); + return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -23454,6 +24369,9 @@ public final class ContextOuterClass { if (attributes_ != null) { output.writeMessage(4, getAttributes()); } + if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) { + output.writeEnum(5, linkType_); + } getUnknownFields().writeTo(output); } @@ -23475,6 +24393,9 @@ public final class ContextOuterClass { if (attributes_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes()); } + if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(5, linkType_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -23505,6 +24426,8 @@ public final class ContextOuterClass { if (!getAttributes().equals(other.getAttributes())) return false; } + if (linkType_ != other.linkType_) + return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -23531,6 +24454,8 @@ public final class ContextOuterClass { hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER; hash = (53 * hash) + getAttributes().hashCode(); } + hash = (37 * hash) + LINK_TYPE_FIELD_NUMBER; + hash = (53 * hash) + linkType_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -23653,6 +24578,7 @@ public final class ContextOuterClass { attributesBuilder_.dispose(); attributesBuilder_ = null; } + linkType_ = 0; return this; } @@ -23709,6 +24635,9 @@ public final class ContextOuterClass { if (((from_bitField0_ & 0x00000008) != 0)) { result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build(); } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.linkType_ = linkType_; + } } @java.lang.Override @@ -23759,6 +24688,9 @@ public final class ContextOuterClass { if (other.hasAttributes()) { mergeAttributes(other.getAttributes()); } + if (other.linkType_ != 0) { + setLinkTypeValue(other.getLinkTypeValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -23815,6 +24747,13 @@ public final class ContextOuterClass { break; } // case 34 + case 40: + { + linkType_ = input.readEnum(); + bitField0_ |= 0x00000010; + break; + } + // case 40 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -24386,6 +25325,65 @@ public final class ContextOuterClass { return attributesBuilder_; } + private int linkType_ = 0; + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The enum numeric value on the wire for linkType. + */ + @java.lang.Override + public int getLinkTypeValue() { + return linkType_; + } + + /** + * .context.LinkTypeEnum link_type = 5; + * @param value The enum numeric value on the wire for linkType to set. + * @return This builder for chaining. + */ + public Builder setLinkTypeValue(int value) { + linkType_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + * .context.LinkTypeEnum link_type = 5; + * @return The linkType. + */ + @java.lang.Override + public context.ContextOuterClass.LinkTypeEnum getLinkType() { + context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_); + return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result; + } + + /** + * .context.LinkTypeEnum link_type = 5; + * @param value The linkType to set. + * @return This builder for chaining. + */ + public Builder setLinkType(context.ContextOuterClass.LinkTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + linkType_ = value.getNumber(); + onChanged(); + return this; + } + + /** + * .context.LinkTypeEnum link_type = 5; + * @return This builder for chaining. + */ + public Builder clearLinkType() { + bitField0_ = (bitField0_ & ~0x00000010); + linkType_ = 0; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -58566,10 +59564,10 @@ public final class ContextOuterClass { com.google.protobuf.MessageOrBuilder { /** - * float start_timestamp = 1; + * double start_timestamp = 1; * @return The startTimestamp. */ - float getStartTimestamp(); + double getStartTimestamp(); /** * float duration_days = 2; @@ -58611,14 +59609,14 @@ public final class ContextOuterClass { public static final int START_TIMESTAMP_FIELD_NUMBER = 1; - private float startTimestamp_ = 0F; + private double startTimestamp_ = 0D; /** - * float start_timestamp = 1; + * double start_timestamp = 1; * @return The startTimestamp. */ @java.lang.Override - public float getStartTimestamp() { + public double getStartTimestamp() { return startTimestamp_; } @@ -58650,8 +59648,8 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) { - output.writeFloat(1, startTimestamp_); + if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) { + output.writeDouble(1, startTimestamp_); } if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) { output.writeFloat(2, durationDays_); @@ -58665,8 +59663,8 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) { - size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_); + if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, startTimestamp_); } if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_); @@ -58685,7 +59683,7 @@ public final class ContextOuterClass { return super.equals(obj); } context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj; - if (java.lang.Float.floatToIntBits(getStartTimestamp()) != java.lang.Float.floatToIntBits(other.getStartTimestamp())) + if (java.lang.Double.doubleToLongBits(getStartTimestamp()) != java.lang.Double.doubleToLongBits(other.getStartTimestamp())) return false; if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays())) return false; @@ -58702,7 +59700,7 @@ public final class ContextOuterClass { int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp()); + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getStartTimestamp())); hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays()); hash = (29 * hash) + getUnknownFields().hashCode(); @@ -58809,7 +59807,7 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - startTimestamp_ = 0F; + startTimestamp_ = 0D; durationDays_ = 0F; return this; } @@ -58866,7 +59864,7 @@ public final class ContextOuterClass { public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) { if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) return this; - if (other.getStartTimestamp() != 0F) { + if (other.getStartTimestamp() != 0D) { setStartTimestamp(other.getStartTimestamp()); } if (other.getDurationDays() != 0F) { @@ -58895,13 +59893,13 @@ public final class ContextOuterClass { case 0: done = true; break; - case 13: + case 9: { - startTimestamp_ = input.readFloat(); + startTimestamp_ = input.readDouble(); bitField0_ |= 0x00000001; break; } - // case 13 + // case 9 case 21: { durationDays_ = input.readFloat(); @@ -58932,23 +59930,23 @@ public final class ContextOuterClass { private int bitField0_; - private float startTimestamp_; + private double startTimestamp_; /** - * float start_timestamp = 1; + * double start_timestamp = 1; * @return The startTimestamp. */ @java.lang.Override - public float getStartTimestamp() { + public double getStartTimestamp() { return startTimestamp_; } /** - * float start_timestamp = 1; + * double start_timestamp = 1; * @param value The startTimestamp to set. * @return This builder for chaining. */ - public Builder setStartTimestamp(float value) { + public Builder setStartTimestamp(double value) { startTimestamp_ = value; bitField0_ |= 0x00000001; onChanged(); @@ -58956,12 +59954,12 @@ public final class ContextOuterClass { } /** - * float start_timestamp = 1; + * double start_timestamp = 1; * @return This builder for chaining. */ public Builder clearStartTimestamp() { bitField0_ = (bitField0_ & ~0x00000001); - startTimestamp_ = 0F; + startTimestamp_ = 0D; onChanged(); return this; } @@ -59588,6 +60586,42 @@ public final class ContextOuterClass { */ context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder(); + /** + * string interface = 3; + * @return Whether the interface field is set. + */ + boolean hasInterface(); + + /** + * string interface = 3; + * @return The interface. + */ + java.lang.String getInterface(); + + /** + * string interface = 3; + * @return The bytes for interface. + */ + com.google.protobuf.ByteString getInterfaceBytes(); + + /** + * string circuit_pack = 4; + * @return Whether the circuitPack field is set. + */ + boolean hasCircuitPack(); + + /** + * string circuit_pack = 4; + * @return The circuitPack. + */ + java.lang.String getCircuitPack(); + + /** + * string circuit_pack = 4; + * @return The bytes for circuitPack. + */ + com.google.protobuf.ByteString getCircuitPackBytes(); + context.ContextOuterClass.Location.LocationCase getLocationCase(); } @@ -59629,7 +60663,7 @@ public final class ContextOuterClass { public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum { - REGION(1), GPS_POSITION(2), LOCATION_NOT_SET(0); + REGION(1), GPS_POSITION(2), INTERFACE(3), CIRCUIT_PACK(4), LOCATION_NOT_SET(0); private final int value; @@ -59653,6 +60687,10 @@ public final class ContextOuterClass { return REGION; case 2: return GPS_POSITION; + case 3: + return INTERFACE; + case 4: + return CIRCUIT_PACK; case 0: return LOCATION_NOT_SET; default: @@ -59754,6 +60792,108 @@ public final class ContextOuterClass { return context.ContextOuterClass.GPS_Position.getDefaultInstance(); } + public static final int INTERFACE_FIELD_NUMBER = 3; + + /** + * string interface = 3; + * @return Whether the interface field is set. + */ + public boolean hasInterface() { + return locationCase_ == 3; + } + + /** + * string interface = 3; + * @return The interface. + */ + public java.lang.String getInterface() { + java.lang.Object ref = ""; + if (locationCase_ == 3) { + ref = location_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (locationCase_ == 3) { + location_ = s; + } + return s; + } + } + + /** + * string interface = 3; + * @return The bytes for interface. + */ + public com.google.protobuf.ByteString getInterfaceBytes() { + java.lang.Object ref = ""; + if (locationCase_ == 3) { + ref = location_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (locationCase_ == 3) { + location_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CIRCUIT_PACK_FIELD_NUMBER = 4; + + /** + * string circuit_pack = 4; + * @return Whether the circuitPack field is set. + */ + public boolean hasCircuitPack() { + return locationCase_ == 4; + } + + /** + * string circuit_pack = 4; + * @return The circuitPack. + */ + public java.lang.String getCircuitPack() { + java.lang.Object ref = ""; + if (locationCase_ == 4) { + ref = location_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (locationCase_ == 4) { + location_ = s; + } + return s; + } + } + + /** + * string circuit_pack = 4; + * @return The bytes for circuitPack. + */ + public com.google.protobuf.ByteString getCircuitPackBytes() { + java.lang.Object ref = ""; + if (locationCase_ == 4) { + ref = location_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (locationCase_ == 4) { + location_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -59775,6 +60915,12 @@ public final class ContextOuterClass { if (locationCase_ == 2) { output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_); } + if (locationCase_ == 3) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_); + } + if (locationCase_ == 4) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, location_); + } getUnknownFields().writeTo(output); } @@ -59790,6 +60936,12 @@ public final class ContextOuterClass { if (locationCase_ == 2) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_); } + if (locationCase_ == 3) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_); + } + if (locationCase_ == 4) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, location_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -59815,6 +60967,14 @@ public final class ContextOuterClass { if (!getGpsPosition().equals(other.getGpsPosition())) return false; break; + case 3: + if (!getInterface().equals(other.getInterface())) + return false; + break; + case 4: + if (!getCircuitPack().equals(other.getCircuitPack())) + return false; + break; case 0: default: } @@ -59839,6 +60999,14 @@ public final class ContextOuterClass { hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER; hash = (53 * hash) + getGpsPosition().hashCode(); break; + case 3: + hash = (37 * hash) + INTERFACE_FIELD_NUMBER; + hash = (53 * hash) + getInterface().hashCode(); + break; + case 4: + hash = (37 * hash) + CIRCUIT_PACK_FIELD_NUMBER; + hash = (53 * hash) + getCircuitPack().hashCode(); + break; case 0: default: } @@ -60022,6 +61190,20 @@ public final class ContextOuterClass { mergeGpsPosition(other.getGpsPosition()); break; } + case INTERFACE: + { + locationCase_ = 3; + location_ = other.location_; + onChanged(); + break; + } + case CIRCUIT_PACK: + { + locationCase_ = 4; + location_ = other.location_; + onChanged(); + break; + } case LOCATION_NOT_SET: { break; @@ -60065,6 +61247,22 @@ public final class ContextOuterClass { break; } // case 18 + case 26: + { + java.lang.String s = input.readStringRequireUtf8(); + locationCase_ = 3; + location_ = s; + break; + } + // case 26 + case 34: + { + java.lang.String s = input.readStringRequireUtf8(); + locationCase_ = 4; + location_ = s; + break; + } + // case 34 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -60340,6 +61538,198 @@ public final class ContextOuterClass { return gpsPositionBuilder_; } + /** + * string interface = 3; + * @return Whether the interface field is set. + */ + @java.lang.Override + public boolean hasInterface() { + return locationCase_ == 3; + } + + /** + * string interface = 3; + * @return The interface. + */ + @java.lang.Override + public java.lang.String getInterface() { + java.lang.Object ref = ""; + if (locationCase_ == 3) { + ref = location_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (locationCase_ == 3) { + location_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string interface = 3; + * @return The bytes for interface. + */ + @java.lang.Override + public com.google.protobuf.ByteString getInterfaceBytes() { + java.lang.Object ref = ""; + if (locationCase_ == 3) { + ref = location_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (locationCase_ == 3) { + location_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string interface = 3; + * @param value The interface to set. + * @return This builder for chaining. + */ + public Builder setInterface(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + locationCase_ = 3; + location_ = value; + onChanged(); + return this; + } + + /** + * string interface = 3; + * @return This builder for chaining. + */ + public Builder clearInterface() { + if (locationCase_ == 3) { + locationCase_ = 0; + location_ = null; + onChanged(); + } + return this; + } + + /** + * string interface = 3; + * @param value The bytes for interface to set. + * @return This builder for chaining. + */ + public Builder setInterfaceBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + locationCase_ = 3; + location_ = value; + onChanged(); + return this; + } + + /** + * string circuit_pack = 4; + * @return Whether the circuitPack field is set. + */ + @java.lang.Override + public boolean hasCircuitPack() { + return locationCase_ == 4; + } + + /** + * string circuit_pack = 4; + * @return The circuitPack. + */ + @java.lang.Override + public java.lang.String getCircuitPack() { + java.lang.Object ref = ""; + if (locationCase_ == 4) { + ref = location_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (locationCase_ == 4) { + location_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string circuit_pack = 4; + * @return The bytes for circuitPack. + */ + @java.lang.Override + public com.google.protobuf.ByteString getCircuitPackBytes() { + java.lang.Object ref = ""; + if (locationCase_ == 4) { + ref = location_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (locationCase_ == 4) { + location_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string circuit_pack = 4; + * @param value The circuitPack to set. + * @return This builder for chaining. + */ + public Builder setCircuitPack(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + locationCase_ = 4; + location_ = value; + onChanged(); + return this; + } + + /** + * string circuit_pack = 4; + * @return This builder for chaining. + */ + public Builder clearCircuitPack() { + if (locationCase_ == 4) { + locationCase_ = 0; + location_ = null; + onChanged(); + } + return this; + } + + /** + * string circuit_pack = 4; + * @param value The bytes for circuitPack to set. + * @return This builder for chaining. + */ + public Builder setCircuitPackBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + locationCase_ = 4; + location_ = value; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -65361,6 +66751,1236 @@ public final class ContextOuterClass { } } + public interface QoSProfileIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.QoSProfileId) + com.google.protobuf.MessageOrBuilder { + + /** + * .context.Uuid qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + boolean hasQosProfileId(); + + /** + * .context.Uuid qos_profile_id = 1; + * @return The qosProfileId. + */ + context.ContextOuterClass.Uuid getQosProfileId(); + + /** + * .context.Uuid qos_profile_id = 1; + */ + context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder(); + } + + /** + * Protobuf type {@code context.QoSProfileId} + */ + public static final class QoSProfileId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.QoSProfileId) + QoSProfileIdOrBuilder { + + private static final long serialVersionUID = 0L; + + // Use QoSProfileId.newBuilder() to construct. + private QoSProfileId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private QoSProfileId() { + } + + @java.lang.Override + @SuppressWarnings({ "unused" }) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new QoSProfileId(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class); + } + + public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1; + + private context.ContextOuterClass.Uuid qosProfileId_; + + /** + * .context.Uuid qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + @java.lang.Override + public boolean hasQosProfileId() { + return qosProfileId_ != null; + } + + /** + * .context.Uuid qos_profile_id = 1; + * @return The qosProfileId. + */ + @java.lang.Override + public context.ContextOuterClass.Uuid getQosProfileId() { + return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_; + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + @java.lang.Override + public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() { + return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (qosProfileId_ != null) { + output.writeMessage(1, getQosProfileId()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + size = 0; + if (qosProfileId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof context.ContextOuterClass.QoSProfileId)) { + return super.equals(obj); + } + context.ContextOuterClass.QoSProfileId other = (context.ContextOuterClass.QoSProfileId) obj; + if (hasQosProfileId() != other.hasQosProfileId()) + return false; + if (hasQosProfileId()) { + if (!getQosProfileId().equals(other.getQosProfileId())) + return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) + return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasQosProfileId()) { + hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER; + hash = (53 * hash) + getQosProfileId().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(context.ContextOuterClass.QoSProfileId prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * Protobuf type {@code context.QoSProfileId} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.QoSProfileId) + context.ContextOuterClass.QoSProfileIdOrBuilder { + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class); + } + + // Construct using context.ContextOuterClass.QoSProfileId.newBuilder() + private Builder() { + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + qosProfileId_ = null; + if (qosProfileIdBuilder_ != null) { + qosProfileIdBuilder_.dispose(); + qosProfileIdBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor; + } + + @java.lang.Override + public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() { + return context.ContextOuterClass.QoSProfileId.getDefaultInstance(); + } + + @java.lang.Override + public context.ContextOuterClass.QoSProfileId build() { + context.ContextOuterClass.QoSProfileId result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public context.ContextOuterClass.QoSProfileId buildPartial() { + context.ContextOuterClass.QoSProfileId result = new context.ContextOuterClass.QoSProfileId(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(context.ContextOuterClass.QoSProfileId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build(); + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof context.ContextOuterClass.QoSProfileId) { + return mergeFrom((context.ContextOuterClass.QoSProfileId) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(context.ContextOuterClass.QoSProfileId other) { + if (other == context.ContextOuterClass.QoSProfileId.getDefaultInstance()) + return this; + if (other.hasQosProfileId()) { + mergeQosProfileId(other.getQosProfileId()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } + // finally + return this; + } + + private int bitField0_; + + private context.ContextOuterClass.Uuid qosProfileId_; + + private com.google.protobuf.SingleFieldBuilderV3 qosProfileIdBuilder_; + + /** + * .context.Uuid qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + public boolean hasQosProfileId() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * .context.Uuid qos_profile_id = 1; + * @return The qosProfileId. + */ + public context.ContextOuterClass.Uuid getQosProfileId() { + if (qosProfileIdBuilder_ == null) { + return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_; + } else { + return qosProfileIdBuilder_.getMessage(); + } + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public Builder setQosProfileId(context.ContextOuterClass.Uuid value) { + if (qosProfileIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + qosProfileId_ = value; + } else { + qosProfileIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public Builder setQosProfileId(context.ContextOuterClass.Uuid.Builder builderForValue) { + if (qosProfileIdBuilder_ == null) { + qosProfileId_ = builderForValue.build(); + } else { + qosProfileIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public Builder mergeQosProfileId(context.ContextOuterClass.Uuid value) { + if (qosProfileIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getQosProfileIdBuilder().mergeFrom(value); + } else { + qosProfileId_ = value; + } + } else { + qosProfileIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public Builder clearQosProfileId() { + bitField0_ = (bitField0_ & ~0x00000001); + qosProfileId_ = null; + if (qosProfileIdBuilder_ != null) { + qosProfileIdBuilder_.dispose(); + qosProfileIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public context.ContextOuterClass.Uuid.Builder getQosProfileIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getQosProfileIdFieldBuilder().getBuilder(); + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() { + if (qosProfileIdBuilder_ != null) { + return qosProfileIdBuilder_.getMessageOrBuilder(); + } else { + return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_; + } + } + + /** + * .context.Uuid qos_profile_id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3 getQosProfileIdFieldBuilder() { + if (qosProfileIdBuilder_ == null) { + qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getQosProfileId(), getParentForChildren(), isClean()); + qosProfileId_ = null; + } + return qosProfileIdBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + // @@protoc_insertion_point(builder_scope:context.QoSProfileId) + } + + // @@protoc_insertion_point(class_scope:context.QoSProfileId) + private static final context.ContextOuterClass.QoSProfileId DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new context.ContextOuterClass.QoSProfileId(); + } + + public static context.ContextOuterClass.QoSProfileId getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + + @java.lang.Override + public QoSProfileId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface Constraint_QoSProfileOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_QoSProfile) + com.google.protobuf.MessageOrBuilder { + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + boolean hasQosProfileId(); + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return The qosProfileId. + */ + context.ContextOuterClass.QoSProfileId getQosProfileId(); + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder(); + + /** + * string qos_profile_name = 2; + * @return The qosProfileName. + */ + java.lang.String getQosProfileName(); + + /** + * string qos_profile_name = 2; + * @return The bytes for qosProfileName. + */ + com.google.protobuf.ByteString getQosProfileNameBytes(); + } + + /** + * Protobuf type {@code context.Constraint_QoSProfile} + */ + public static final class Constraint_QoSProfile extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_QoSProfile) + Constraint_QoSProfileOrBuilder { + + private static final long serialVersionUID = 0L; + + // Use Constraint_QoSProfile.newBuilder() to construct. + private Constraint_QoSProfile(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Constraint_QoSProfile() { + qosProfileName_ = ""; + } + + @java.lang.Override + @SuppressWarnings({ "unused" }) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Constraint_QoSProfile(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class); + } + + public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1; + + private context.ContextOuterClass.QoSProfileId qosProfileId_; + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + @java.lang.Override + public boolean hasQosProfileId() { + return qosProfileId_ != null; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return The qosProfileId. + */ + @java.lang.Override + public context.ContextOuterClass.QoSProfileId getQosProfileId() { + return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + @java.lang.Override + public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() { + return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_; + } + + public static final int QOS_PROFILE_NAME_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object qosProfileName_ = ""; + + /** + * string qos_profile_name = 2; + * @return The qosProfileName. + */ + @java.lang.Override + public java.lang.String getQosProfileName() { + java.lang.Object ref = qosProfileName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + qosProfileName_ = s; + return s; + } + } + + /** + * string qos_profile_name = 2; + * @return The bytes for qosProfileName. + */ + @java.lang.Override + public com.google.protobuf.ByteString getQosProfileNameBytes() { + java.lang.Object ref = qosProfileName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + qosProfileName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (qosProfileId_ != null) { + output.writeMessage(1, getQosProfileId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, qosProfileName_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + size = 0; + if (qosProfileId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, qosProfileName_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof context.ContextOuterClass.Constraint_QoSProfile)) { + return super.equals(obj); + } + context.ContextOuterClass.Constraint_QoSProfile other = (context.ContextOuterClass.Constraint_QoSProfile) obj; + if (hasQosProfileId() != other.hasQosProfileId()) + return false; + if (hasQosProfileId()) { + if (!getQosProfileId().equals(other.getQosProfileId())) + return false; + } + if (!getQosProfileName().equals(other.getQosProfileName())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) + return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasQosProfileId()) { + hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER; + hash = (53 * hash) + getQosProfileId().hashCode(); + } + hash = (37 * hash) + QOS_PROFILE_NAME_FIELD_NUMBER; + hash = (53 * hash) + getQosProfileName().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(context.ContextOuterClass.Constraint_QoSProfile prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * Protobuf type {@code context.Constraint_QoSProfile} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Constraint_QoSProfile) + context.ContextOuterClass.Constraint_QoSProfileOrBuilder { + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class); + } + + // Construct using context.ContextOuterClass.Constraint_QoSProfile.newBuilder() + private Builder() { + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + qosProfileId_ = null; + if (qosProfileIdBuilder_ != null) { + qosProfileIdBuilder_.dispose(); + qosProfileIdBuilder_ = null; + } + qosProfileName_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor; + } + + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() { + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile build() { + context.ContextOuterClass.Constraint_QoSProfile result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile buildPartial() { + context.ContextOuterClass.Constraint_QoSProfile result = new context.ContextOuterClass.Constraint_QoSProfile(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(context.ContextOuterClass.Constraint_QoSProfile result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.qosProfileName_ = qosProfileName_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof context.ContextOuterClass.Constraint_QoSProfile) { + return mergeFrom((context.ContextOuterClass.Constraint_QoSProfile) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(context.ContextOuterClass.Constraint_QoSProfile other) { + if (other == context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance()) + return this; + if (other.hasQosProfileId()) { + mergeQosProfileId(other.getQosProfileId()); + } + if (!other.getQosProfileName().isEmpty()) { + qosProfileName_ = other.qosProfileName_; + bitField0_ |= 0x00000002; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + qosProfileName_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } + // finally + return this; + } + + private int bitField0_; + + private context.ContextOuterClass.QoSProfileId qosProfileId_; + + private com.google.protobuf.SingleFieldBuilderV3 qosProfileIdBuilder_; + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return Whether the qosProfileId field is set. + */ + public boolean hasQosProfileId() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + * @return The qosProfileId. + */ + public context.ContextOuterClass.QoSProfileId getQosProfileId() { + if (qosProfileIdBuilder_ == null) { + return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_; + } else { + return qosProfileIdBuilder_.getMessage(); + } + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId value) { + if (qosProfileIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + qosProfileId_ = value; + } else { + qosProfileIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId.Builder builderForValue) { + if (qosProfileIdBuilder_ == null) { + qosProfileId_ = builderForValue.build(); + } else { + qosProfileIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public Builder mergeQosProfileId(context.ContextOuterClass.QoSProfileId value) { + if (qosProfileIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.QoSProfileId.getDefaultInstance()) { + getQosProfileIdBuilder().mergeFrom(value); + } else { + qosProfileId_ = value; + } + } else { + qosProfileIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public Builder clearQosProfileId() { + bitField0_ = (bitField0_ & ~0x00000001); + qosProfileId_ = null; + if (qosProfileIdBuilder_ != null) { + qosProfileIdBuilder_.dispose(); + qosProfileIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public context.ContextOuterClass.QoSProfileId.Builder getQosProfileIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getQosProfileIdFieldBuilder().getBuilder(); + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() { + if (qosProfileIdBuilder_ != null) { + return qosProfileIdBuilder_.getMessageOrBuilder(); + } else { + return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_; + } + } + + /** + * .context.QoSProfileId qos_profile_id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3 getQosProfileIdFieldBuilder() { + if (qosProfileIdBuilder_ == null) { + qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getQosProfileId(), getParentForChildren(), isClean()); + qosProfileId_ = null; + } + return qosProfileIdBuilder_; + } + + private java.lang.Object qosProfileName_ = ""; + + /** + * string qos_profile_name = 2; + * @return The qosProfileName. + */ + public java.lang.String getQosProfileName() { + java.lang.Object ref = qosProfileName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + qosProfileName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string qos_profile_name = 2; + * @return The bytes for qosProfileName. + */ + public com.google.protobuf.ByteString getQosProfileNameBytes() { + java.lang.Object ref = qosProfileName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + qosProfileName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string qos_profile_name = 2; + * @param value The qosProfileName to set. + * @return This builder for chaining. + */ + public Builder setQosProfileName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + qosProfileName_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * string qos_profile_name = 2; + * @return This builder for chaining. + */ + public Builder clearQosProfileName() { + qosProfileName_ = getDefaultInstance().getQosProfileName(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * string qos_profile_name = 2; + * @param value The bytes for qosProfileName to set. + * @return This builder for chaining. + */ + public Builder setQosProfileNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + qosProfileName_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + // @@protoc_insertion_point(builder_scope:context.Constraint_QoSProfile) + } + + // @@protoc_insertion_point(class_scope:context.Constraint_QoSProfile) + private static final context.ContextOuterClass.Constraint_QoSProfile DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_QoSProfile(); + } + + public static context.ContextOuterClass.Constraint_QoSProfile getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + + @java.lang.Override + public Constraint_QoSProfile parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + public interface ConstraintOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint) com.google.protobuf.MessageOrBuilder { @@ -65529,6 +68149,23 @@ public final class ContextOuterClass { */ context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder(); + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return Whether the qosProfile field is set. + */ + boolean hasQosProfile(); + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return The qosProfile. + */ + context.ContextOuterClass.Constraint_QoSProfile getQosProfile(); + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder(); + context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase(); } @@ -65580,6 +68217,7 @@ public final class ContextOuterClass { SLA_AVAILABILITY(8), SLA_ISOLATION(9), EXCLUSIONS(10), + QOS_PROFILE(11), CONSTRAINT_NOT_SET(0); private final int value; @@ -65618,6 +68256,8 @@ public final class ContextOuterClass { return SLA_ISOLATION; case 10: return EXCLUSIONS; + case 11: + return QOS_PROFILE; case 0: return CONSTRAINT_NOT_SET; default: @@ -65963,6 +68603,40 @@ public final class ContextOuterClass { return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance(); } + public static final int QOS_PROFILE_FIELD_NUMBER = 11; + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return Whether the qosProfile field is set. + */ + @java.lang.Override + public boolean hasQosProfile() { + return constraintCase_ == 11; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return The qosProfile. + */ + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() { + if (constraintCase_ == 11) { + return (context.ContextOuterClass.Constraint_QoSProfile) constraint_; + } + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() { + if (constraintCase_ == 11) { + return (context.ContextOuterClass.Constraint_QoSProfile) constraint_; + } + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -66008,6 +68682,9 @@ public final class ContextOuterClass { if (constraintCase_ == 10) { output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_); } + if (constraintCase_ == 11) { + output.writeMessage(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_); + } getUnknownFields().writeTo(output); } @@ -66047,6 +68724,9 @@ public final class ContextOuterClass { if (constraintCase_ == 10) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_); } + if (constraintCase_ == 11) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -66102,6 +68782,10 @@ public final class ContextOuterClass { if (!getExclusions().equals(other.getExclusions())) return false; break; + case 11: + if (!getQosProfile().equals(other.getQosProfile())) + return false; + break; case 0: default: } @@ -66156,6 +68840,10 @@ public final class ContextOuterClass { hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER; hash = (53 * hash) + getExclusions().hashCode(); break; + case 11: + hash = (37 * hash) + QOS_PROFILE_FIELD_NUMBER; + hash = (53 * hash) + getQosProfile().hashCode(); + break; case 0: default: } @@ -66291,6 +68979,9 @@ public final class ContextOuterClass { if (exclusionsBuilder_ != null) { exclusionsBuilder_.clear(); } + if (qosProfileBuilder_ != null) { + qosProfileBuilder_.clear(); + } constraintCase_ = 0; constraint_ = null; return this; @@ -66363,6 +69054,9 @@ public final class ContextOuterClass { if (constraintCase_ == 10 && exclusionsBuilder_ != null) { result.constraint_ = exclusionsBuilder_.build(); } + if (constraintCase_ == 11 && qosProfileBuilder_ != null) { + result.constraint_ = qosProfileBuilder_.build(); + } } @java.lang.Override @@ -66427,6 +69121,11 @@ public final class ContextOuterClass { mergeExclusions(other.getExclusions()); break; } + case QOS_PROFILE: + { + mergeQosProfile(other.getQosProfile()); + break; + } case CONSTRAINT_NOT_SET: { break; @@ -66525,6 +69224,13 @@ public final class ContextOuterClass { break; } // case 82 + case 90: + { + input.readMessage(getQosProfileFieldBuilder().getBuilder(), extensionRegistry); + constraintCase_ = 11; + break; + } + // case 90 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -67891,6 +70597,147 @@ public final class ContextOuterClass { return exclusionsBuilder_; } + private com.google.protobuf.SingleFieldBuilderV3 qosProfileBuilder_; + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return Whether the qosProfile field is set. + */ + @java.lang.Override + public boolean hasQosProfile() { + return constraintCase_ == 11; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + * @return The qosProfile. + */ + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() { + if (qosProfileBuilder_ == null) { + if (constraintCase_ == 11) { + return (context.ContextOuterClass.Constraint_QoSProfile) constraint_; + } + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } else { + if (constraintCase_ == 11) { + return qosProfileBuilder_.getMessage(); + } + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) { + if (qosProfileBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + constraint_ = value; + onChanged(); + } else { + qosProfileBuilder_.setMessage(value); + } + constraintCase_ = 11; + return this; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile.Builder builderForValue) { + if (qosProfileBuilder_ == null) { + constraint_ = builderForValue.build(); + onChanged(); + } else { + qosProfileBuilder_.setMessage(builderForValue.build()); + } + constraintCase_ = 11; + return this; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + public Builder mergeQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) { + if (qosProfileBuilder_ == null) { + if (constraintCase_ == 11 && constraint_ != context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance()) { + constraint_ = context.ContextOuterClass.Constraint_QoSProfile.newBuilder((context.ContextOuterClass.Constraint_QoSProfile) constraint_).mergeFrom(value).buildPartial(); + } else { + constraint_ = value; + } + onChanged(); + } else { + if (constraintCase_ == 11) { + qosProfileBuilder_.mergeFrom(value); + } else { + qosProfileBuilder_.setMessage(value); + } + } + constraintCase_ = 11; + return this; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + public Builder clearQosProfile() { + if (qosProfileBuilder_ == null) { + if (constraintCase_ == 11) { + constraintCase_ = 0; + constraint_ = null; + onChanged(); + } + } else { + if (constraintCase_ == 11) { + constraintCase_ = 0; + constraint_ = null; + } + qosProfileBuilder_.clear(); + } + return this; + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + public context.ContextOuterClass.Constraint_QoSProfile.Builder getQosProfileBuilder() { + return getQosProfileFieldBuilder().getBuilder(); + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + @java.lang.Override + public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() { + if ((constraintCase_ == 11) && (qosProfileBuilder_ != null)) { + return qosProfileBuilder_.getMessageOrBuilder(); + } else { + if (constraintCase_ == 11) { + return (context.ContextOuterClass.Constraint_QoSProfile) constraint_; + } + return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + } + + /** + * .context.Constraint_QoSProfile qos_profile = 11; + */ + private com.google.protobuf.SingleFieldBuilderV3 getQosProfileFieldBuilder() { + if (qosProfileBuilder_ == null) { + if (!(constraintCase_ == 11)) { + constraint_ = context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance(); + } + qosProfileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_QoSProfile) constraint_, getParentForChildren(), isClean()); + constraint_ = null; + } + constraintCase_ = 11; + onChanged(); + return qosProfileBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -69276,9 +72123,509 @@ public final class ContextOuterClass { * bool authenticated = 2; * @return This builder for chaining. */ - public Builder clearAuthenticated() { - bitField0_ = (bitField0_ & ~0x00000002); - authenticated_ = false; + public Builder clearAuthenticated() { + bitField0_ = (bitField0_ & ~0x00000002); + authenticated_ = false; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + // @@protoc_insertion_point(builder_scope:context.AuthenticationResult) + } + + // @@protoc_insertion_point(class_scope:context.AuthenticationResult) + private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult(); + } + + public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + + @java.lang.Override + public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId) + com.google.protobuf.MessageOrBuilder { + + /** + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. + */ + java.lang.String getOpticalconfigUuid(); + + /** + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. + */ + com.google.protobuf.ByteString getOpticalconfigUuidBytes(); + } + + /** + *
+     * ---------------- Experimental ------------------------
+     * 
+ * + * Protobuf type {@code context.OpticalConfigId} + */ + public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId) + OpticalConfigIdOrBuilder { + + private static final long serialVersionUID = 0L; + + // Use OpticalConfigId.newBuilder() to construct. + private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private OpticalConfigId() { + opticalconfigUuid_ = ""; + } + + @java.lang.Override + @SuppressWarnings({ "unused" }) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new OpticalConfigId(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + } + + public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object opticalconfigUuid_ = ""; + + /** + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. + */ + @java.lang.Override + public java.lang.String getOpticalconfigUuid() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + opticalconfigUuid_ = s; + return s; + } + } + + /** + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. + */ + @java.lang.Override + public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + opticalconfigUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) { + return super.equals(obj); + } + context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj; + if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) + return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigUuid().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + *
+         * ---------------- Experimental ------------------------
+         * 
+ * + * Protobuf type {@code context.OpticalConfigId} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId) + context.ContextOuterClass.OpticalConfigIdOrBuilder { + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + } + + // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder() + private Builder() { + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + opticalconfigUuid_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + } + + @java.lang.Override + public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigId.getDefaultInstance(); + } + + @java.lang.Override + public context.ContextOuterClass.OpticalConfigId build() { + context.ContextOuterClass.OpticalConfigId result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public context.ContextOuterClass.OpticalConfigId buildPartial() { + context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(context.ContextOuterClass.OpticalConfigId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.opticalconfigUuid_ = opticalconfigUuid_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof context.ContextOuterClass.OpticalConfigId) { + return mergeFrom((context.ContextOuterClass.OpticalConfigId) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) { + if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) + return this; + if (!other.getOpticalconfigUuid().isEmpty()) { + opticalconfigUuid_ = other.opticalconfigUuid_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + opticalconfigUuid_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } + // finally + return this; + } + + private int bitField0_; + + private java.lang.Object opticalconfigUuid_ = ""; + + /** + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. + */ + public java.lang.String getOpticalconfigUuid() { + java.lang.Object ref = opticalconfigUuid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + opticalconfigUuid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. + */ + public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + opticalconfigUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string opticalconfig_uuid = 1; + * @param value The opticalconfigUuid to set. + * @return This builder for chaining. + */ + public Builder setOpticalconfigUuid(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + opticalconfigUuid_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * string opticalconfig_uuid = 1; + * @return This builder for chaining. + */ + public Builder clearOpticalconfigUuid() { + opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * string opticalconfig_uuid = 1; + * @param value The bytes for opticalconfigUuid to set. + * @return This builder for chaining. + */ + public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + opticalconfigUuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -69292,24 +72639,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.AuthenticationResult) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigId) } - // @@protoc_insertion_point(class_scope:context.AuthenticationResult) - private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigId) + private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId(); } - public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -69324,111 +72671,201 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId) + public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig) com.google.protobuf.MessageOrBuilder { /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. */ - java.lang.String getOpticalconfigUuid(); + boolean hasOpticalconfigId(); /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. */ - com.google.protobuf.ByteString getOpticalconfigUuidBytes(); + context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); + + /** + * string config = 2; + * @return The config. + */ + java.lang.String getConfig(); + + /** + * string config = 2; + * @return The bytes for config. + */ + com.google.protobuf.ByteString getConfigBytes(); + + /** + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. + */ + boolean hasDeviceId(); + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + context.ContextOuterClass.DeviceId getDeviceId(); + + /** + * .context.DeviceId device_id = 3; + */ + context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder(); } /** - *
-     * ---------------- Experimental ------------------------
-     * 
- * - * Protobuf type {@code context.OpticalConfigId} + * Protobuf type {@code context.OpticalConfig} */ - public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId) - OpticalConfigIdOrBuilder { + public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig) + OpticalConfigOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfigId.newBuilder() to construct. - private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfig.newBuilder() to construct. + private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfigId() { - opticalconfigUuid_ = ""; + private OpticalConfig() { + config_ = ""; } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfigId(); + return new OpticalConfig(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); } - public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1; + public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. + */ + @java.lang.Override + public boolean hasOpticalconfigId() { + return opticalconfigId_ != null; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. + */ + @java.lang.Override + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + + public static final int CONFIG_FIELD_NUMBER = 2; @SuppressWarnings("serial") - private volatile java.lang.Object opticalconfigUuid_ = ""; + private volatile java.lang.Object config_ = ""; /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * string config = 2; + * @return The config. */ @java.lang.Override - public java.lang.String getOpticalconfigUuid() { - java.lang.Object ref = opticalconfigUuid_; + public java.lang.String getConfig() { + java.lang.Object ref = config_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - opticalconfigUuid_ = s; + config_ = s; return s; } } /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * string config = 2; + * @return The bytes for config. */ @java.lang.Override - public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { - java.lang.Object ref = opticalconfigUuid_; + public com.google.protobuf.ByteString getConfigBytes() { + java.lang.Object ref = config_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - opticalconfigUuid_ = b; + config_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } + public static final int DEVICE_ID_FIELD_NUMBER = 3; + + private context.ContextOuterClass.DeviceId deviceId_; + + /** + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. + */ + @java.lang.Override + public boolean hasDeviceId() { + return deviceId_ != null; + } + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + @java.lang.Override + public context.ContextOuterClass.DeviceId getDeviceId() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + + /** + * .context.DeviceId device_id = 3; + */ + @java.lang.Override + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -69444,8 +72881,14 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_); + if (opticalconfigId_ != null) { + output.writeMessage(1, getOpticalconfigId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_); + } + if (deviceId_ != null) { + output.writeMessage(3, getDeviceId()); } getUnknownFields().writeTo(output); } @@ -69456,8 +72899,14 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_); + if (opticalconfigId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_); + } + if (deviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceId()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -69469,12 +72918,24 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj; - if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid())) + context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj; + if (hasOpticalconfigId() != other.hasOpticalconfigId()) + return false; + if (hasOpticalconfigId()) { + if (!getOpticalconfigId().equals(other.getOpticalconfigId())) + return false; + } + if (!getConfig().equals(other.getConfig())) + return false; + if (hasDeviceId() != other.hasDeviceId()) return false; + if (hasDeviceId()) { + if (!getDeviceId().equals(other.getDeviceId())) + return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -69487,58 +72948,66 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigUuid().hashCode(); + if (hasOpticalconfigId()) { + hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigId().hashCode(); + } + hash = (37 * hash) + CONFIG_FIELD_NUMBER; + hash = (53 * hash) + getConfig().hashCode(); + if (hasDeviceId()) { + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -69551,7 +73020,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -69567,25 +73036,21 @@ public final class ContextOuterClass { } /** - *
-         * ---------------- Experimental ------------------------
-         * 
- * - * Protobuf type {@code context.OpticalConfigId} + * Protobuf type {@code context.OpticalConfig} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId) - context.ContextOuterClass.OpticalConfigIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig) + context.ContextOuterClass.OpticalConfigOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfig.newBuilder() private Builder() { } @@ -69597,23 +73062,33 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - opticalconfigUuid_ = ""; + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; + } + config_ = ""; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfigId.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfig.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId build() { - context.ContextOuterClass.OpticalConfigId result = buildPartial(); + public context.ContextOuterClass.OpticalConfig build() { + context.ContextOuterClass.OpticalConfig result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -69621,8 +73096,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId buildPartial() { - context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this); + public context.ContextOuterClass.OpticalConfig buildPartial() { + context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this); if (bitField0_ != 0) { buildPartial0(result); } @@ -69630,31 +73105,43 @@ public final class ContextOuterClass { return result; } - private void buildPartial0(context.ContextOuterClass.OpticalConfigId result) { + private void buildPartial0(context.ContextOuterClass.OpticalConfig result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { - result.opticalconfigUuid_ = opticalconfigUuid_; + result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.config_ = config_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfigId) { - return mergeFrom((context.ContextOuterClass.OpticalConfigId) other); + if (other instanceof context.ContextOuterClass.OpticalConfig) { + return mergeFrom((context.ContextOuterClass.OpticalConfig) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) { - if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) { + if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance()) return this; - if (!other.getOpticalconfigUuid().isEmpty()) { - opticalconfigUuid_ = other.opticalconfigUuid_; - bitField0_ |= 0x00000001; + if (other.hasOpticalconfigId()) { + mergeOpticalconfigId(other.getOpticalconfigId()); + } + if (!other.getConfig().isEmpty()) { + config_ = other.config_; + bitField0_ |= 0x00000002; onChanged(); } + if (other.hasDeviceId()) { + mergeDeviceId(other.getDeviceId()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -69680,11 +73167,25 @@ public final class ContextOuterClass { break; case 10: { - opticalconfigUuid_ = input.readStringRequireUtf8(); + input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000001; break; } // case 10 + case 18: + { + config_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -69702,87 +73203,323 @@ public final class ContextOuterClass { } finally { onChanged(); } - // finally + // finally + return this; + } + + private int bitField0_; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. + */ + public boolean hasOpticalconfigId() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. + */ + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + if (opticalconfigIdBuilder_ == null) { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } else { + return opticalconfigIdBuilder_.getMessage(); + } + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + opticalconfigId_ = value; + } else { + opticalconfigIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { + if (opticalconfigIdBuilder_ == null) { + opticalconfigId_ = builderForValue.build(); + } else { + opticalconfigIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) { + getOpticalconfigIdBuilder().mergeFrom(value); + } else { + opticalconfigId_ = value; + } + } else { + opticalconfigIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder clearOpticalconfigId() { + bitField0_ = (bitField0_ & ~0x00000001); + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getOpticalconfigIdFieldBuilder().getBuilder(); + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + if (opticalconfigIdBuilder_ != null) { + return opticalconfigIdBuilder_.getMessageOrBuilder(); + } else { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { + if (opticalconfigIdBuilder_ == null) { + opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); + opticalconfigId_ = null; + } + return opticalconfigIdBuilder_; + } + + private java.lang.Object config_ = ""; + + /** + * string config = 2; + * @return The config. + */ + public java.lang.String getConfig() { + java.lang.Object ref = config_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + config_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string config = 2; + * @return The bytes for config. + */ + public com.google.protobuf.ByteString getConfigBytes() { + java.lang.Object ref = config_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + config_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string config = 2; + * @param value The config to set. + * @return This builder for chaining. + */ + public Builder setConfig(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + config_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * string config = 2; + * @return This builder for chaining. + */ + public Builder clearConfig() { + config_ = getDefaultInstance().getConfig(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * string config = 2; + * @param value The bytes for config to set. + * @return This builder for chaining. + */ + public Builder setConfigBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + config_ = value; + bitField0_ |= 0x00000002; + onChanged(); return this; } - private int bitField0_; + private context.ContextOuterClass.DeviceId deviceId_; - private java.lang.Object opticalconfigUuid_ = ""; + private com.google.protobuf.SingleFieldBuilderV3 deviceIdBuilder_; /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. */ - public java.lang.String getOpticalconfigUuid() { - java.lang.Object ref = opticalconfigUuid_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - opticalconfigUuid_ = s; - return s; + public boolean hasDeviceId() { + return ((bitField0_ & 0x00000004) != 0); + } + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + public context.ContextOuterClass.DeviceId getDeviceId() { + if (deviceIdBuilder_ == null) { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } else { - return (java.lang.String) ref; + return deviceIdBuilder_.getMessage(); } } /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * .context.DeviceId device_id = 3; */ - public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { - java.lang.Object ref = opticalconfigUuid_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - opticalconfigUuid_ = b; - return b; + public Builder setDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + deviceId_ = value; } else { - return (com.google.protobuf.ByteString) ref; + deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000004; + onChanged(); + return this; } /** - * string opticalconfig_uuid = 1; - * @param value The opticalconfigUuid to set. - * @return This builder for chaining. + * .context.DeviceId device_id = 3; */ - public Builder setOpticalconfigUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); + public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { + if (deviceIdBuilder_ == null) { + deviceId_ = builderForValue.build(); + } else { + deviceIdBuilder_.setMessage(builderForValue.build()); } - opticalconfigUuid_ = value; - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string opticalconfig_uuid = 1; - * @return This builder for chaining. + * .context.DeviceId device_id = 3; */ - public Builder clearOpticalconfigUuid() { - opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid(); - bitField0_ = (bitField0_ & ~0x00000001); + public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); + } else { + deviceId_ = value; + } + } else { + deviceIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string opticalconfig_uuid = 1; - * @param value The bytes for opticalconfigUuid to set. - * @return This builder for chaining. + * .context.DeviceId device_id = 3; */ - public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public Builder clearDeviceId() { + bitField0_ = (bitField0_ & ~0x00000004); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; } - checkByteStringIsUtf8(value); - opticalconfigUuid_ = value; - bitField0_ |= 0x00000001; onChanged(); return this; } + /** + * .context.DeviceId device_id = 3; + */ + public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getDeviceIdFieldBuilder().getBuilder(); + } + + /** + * .context.DeviceId device_id = 3; + */ + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + if (deviceIdBuilder_ != null) { + return deviceIdBuilder_.getMessageOrBuilder(); + } else { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + } + + /** + * .context.DeviceId device_id = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3 getDeviceIdFieldBuilder() { + if (deviceIdBuilder_ == null) { + deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDeviceId(), getParentForChildren(), isClean()); + deviceId_ = null; + } + return deviceIdBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -69792,24 +73529,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfigId) + // @@protoc_insertion_point(builder_scope:context.OpticalConfig) } - // @@protoc_insertion_point(class_scope:context.OpticalConfigId) - private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfig) + private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig(); } - public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfig getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -69824,152 +73561,125 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig) + public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList) com.google.protobuf.MessageOrBuilder { /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - boolean hasOpticalconfigId(); + java.util.List getOpticalconfigsList(); /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); + context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index); /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); + int getOpticalconfigsCount(); /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - java.lang.String getConfig(); + java.util.List getOpticalconfigsOrBuilderList(); /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - com.google.protobuf.ByteString getConfigBytes(); + context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index); } /** - * Protobuf type {@code context.OpticalConfig} + * Protobuf type {@code context.OpticalConfigList} */ - public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig) - OpticalConfigOrBuilder { + public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList) + OpticalConfigListOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfig.newBuilder() to construct. - private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfigList.newBuilder() to construct. + private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfig() { - config_ = ""; + private OpticalConfigList() { + opticalconfigs_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfig(); + return new OpticalConfigList(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); } - public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1; + public static final int OPTICALCONFIGS_FIELD_NUMBER = 1; - private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + @SuppressWarnings("serial") + private java.util.List opticalconfigs_; /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public boolean hasOpticalconfigId() { - return opticalconfigId_ != null; + public java.util.List getOpticalconfigsList() { + return opticalconfigs_; } /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + public java.util.List getOpticalconfigsOrBuilderList() { + return opticalconfigs_; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + public int getOpticalconfigsCount() { + return opticalconfigs_.size(); } - public static final int CONFIG_FIELD_NUMBER = 2; - - @SuppressWarnings("serial") - private volatile java.lang.Object config_ = ""; - /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public java.lang.String getConfig() { - java.lang.Object ref = config_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - config_ = s; - return s; - } + public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { + return opticalconfigs_.get(index); } /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public com.google.protobuf.ByteString getConfigBytes() { - java.lang.Object ref = config_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - config_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { + return opticalconfigs_.get(index); } private byte memoizedIsInitialized = -1; @@ -69987,11 +73697,8 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (opticalconfigId_ != null) { - output.writeMessage(1, getOpticalconfigId()); - } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_); + for (int i = 0; i < opticalconfigs_.size(); i++) { + output.writeMessage(1, opticalconfigs_.get(i)); } getUnknownFields().writeTo(output); } @@ -70002,11 +73709,8 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (opticalconfigId_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId()); - } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_); + for (int i = 0; i < opticalconfigs_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -70018,17 +73722,11 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj; - if (hasOpticalconfigId() != other.hasOpticalconfigId()) - return false; - if (hasOpticalconfigId()) { - if (!getOpticalconfigId().equals(other.getOpticalconfigId())) - return false; - } - if (!getConfig().equals(other.getConfig())) + context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj; + if (!getOpticalconfigsList().equals(other.getOpticalconfigsList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; @@ -70042,62 +73740,60 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasOpticalconfigId()) { - hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigId().hashCode(); + if (getOpticalconfigsCount() > 0) { + hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigsList().hashCode(); } - hash = (37 * hash) + CONFIG_FIELD_NUMBER; - hash = (53 * hash) + getConfig().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -70110,7 +73806,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -70126,21 +73822,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalConfig} + * Protobuf type {@code context.OpticalConfigList} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig) - context.ContextOuterClass.OpticalConfigOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList) + context.ContextOuterClass.OpticalConfigListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfig.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder() private Builder() { } @@ -70152,28 +73848,29 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - opticalconfigId_ = null; - if (opticalconfigIdBuilder_ != null) { - opticalconfigIdBuilder_.dispose(); - opticalconfigIdBuilder_ = null; + if (opticalconfigsBuilder_ == null) { + opticalconfigs_ = java.util.Collections.emptyList(); + } else { + opticalconfigs_ = null; + opticalconfigsBuilder_.clear(); } - config_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfig.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigList.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfig build() { - context.ContextOuterClass.OpticalConfig result = buildPartial(); + public context.ContextOuterClass.OpticalConfigList build() { + context.ContextOuterClass.OpticalConfigList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -70181,8 +73878,9 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfig buildPartial() { - context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this); + public context.ContextOuterClass.OpticalConfigList buildPartial() { + context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -70190,36 +73888,58 @@ public final class ContextOuterClass { return result; } - private void buildPartial0(context.ContextOuterClass.OpticalConfig result) { - int from_bitField0_ = bitField0_; - if (((from_bitField0_ & 0x00000001) != 0)) { - result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build(); - } - if (((from_bitField0_ & 0x00000002) != 0)) { - result.config_ = config_; + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalConfigList result) { + if (opticalconfigsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.opticalconfigs_ = opticalconfigs_; + } else { + result.opticalconfigs_ = opticalconfigsBuilder_.build(); } } + private void buildPartial0(context.ContextOuterClass.OpticalConfigList result) { + int from_bitField0_ = bitField0_; + } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfig) { - return mergeFrom((context.ContextOuterClass.OpticalConfig) other); + if (other instanceof context.ContextOuterClass.OpticalConfigList) { + return mergeFrom((context.ContextOuterClass.OpticalConfigList) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) { - if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) { + if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance()) return this; - if (other.hasOpticalconfigId()) { - mergeOpticalconfigId(other.getOpticalconfigId()); - } - if (!other.getConfig().isEmpty()) { - config_ = other.config_; - bitField0_ |= 0x00000002; - onChanged(); + if (opticalconfigsBuilder_ == null) { + if (!other.opticalconfigs_.isEmpty()) { + if (opticalconfigs_.isEmpty()) { + opticalconfigs_ = other.opticalconfigs_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.addAll(other.opticalconfigs_); + } + onChanged(); + } + } else { + if (!other.opticalconfigs_.isEmpty()) { + if (opticalconfigsBuilder_.isEmpty()) { + opticalconfigsBuilder_.dispose(); + opticalconfigsBuilder_ = null; + opticalconfigs_ = other.opticalconfigs_; + bitField0_ = (bitField0_ & ~0x00000001); + opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null; + } else { + opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_); + } + } } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -70246,18 +73966,16 @@ public final class ContextOuterClass { break; case 10: { - input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000001; + context.ContextOuterClass.OpticalConfig m = input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry); + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(m); + } else { + opticalconfigsBuilder_.addMessage(m); + } break; } // case 10 - case 18: - { - config_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000002; - break; - } - // case 18 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -70281,197 +73999,241 @@ public final class ContextOuterClass { private int bitField0_; - private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + private java.util.List opticalconfigs_ = java.util.Collections.emptyList(); - private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + private void ensureOpticalconfigsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + opticalconfigs_ = new java.util.ArrayList(opticalconfigs_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalconfigsBuilder_; /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public boolean hasOpticalconfigId() { - return ((bitField0_ & 0x00000001) != 0); + public java.util.List getOpticalconfigsList() { + if (opticalconfigsBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalconfigs_); + } else { + return opticalconfigsBuilder_.getMessageList(); + } } /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { - if (opticalconfigIdBuilder_ == null) { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + public int getOpticalconfigsCount() { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.size(); + } else { + return opticalconfigsBuilder_.getCount(); + } + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.get(index); + } else { + return opticalconfigsBuilder_.getMessage(index); + } + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalconfigsIsMutable(); + opticalconfigs_.set(index, value); + onChanged(); + } else { + opticalconfigsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.set(index, builderForValue.build()); + onChanged(); } else { - return opticalconfigIdBuilder_.getMessage(); + opticalconfigsBuilder_.setMessage(index, builderForValue.build()); } + return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { - if (opticalconfigIdBuilder_ == null) { + public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalconfigId_ = value; + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(value); + onChanged(); } else { - opticalconfigIdBuilder_.setMessage(value); + opticalconfigsBuilder_.addMessage(value); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { - if (opticalconfigIdBuilder_ == null) { - opticalconfigId_ = builderForValue.build(); + public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(index, value); + onChanged(); } else { - opticalconfigIdBuilder_.setMessage(builderForValue.build()); + opticalconfigsBuilder_.addMessage(index, value); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { - if (opticalconfigIdBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) { - getOpticalconfigIdBuilder().mergeFrom(value); - } else { - opticalconfigId_ = value; - } + public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(builderForValue.build()); + onChanged(); } else { - opticalconfigIdBuilder_.mergeFrom(value); + opticalconfigsBuilder_.addMessage(builderForValue.build()); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder clearOpticalconfigId() { - bitField0_ = (bitField0_ & ~0x00000001); - opticalconfigId_ = null; - if (opticalconfigIdBuilder_ != null) { - opticalconfigIdBuilder_.dispose(); - opticalconfigIdBuilder_ = null; + public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalconfigsBuilder_.addMessage(index, builderForValue.build()); } - onChanged(); return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { - bitField0_ |= 0x00000001; - onChanged(); - return getOpticalconfigIdFieldBuilder().getBuilder(); + public Builder addAllOpticalconfigs(java.lang.Iterable values) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_); + onChanged(); + } else { + opticalconfigsBuilder_.addAllMessages(values); + } + return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { - if (opticalconfigIdBuilder_ != null) { - return opticalconfigIdBuilder_.getMessageOrBuilder(); + public Builder clearOpticalconfigs() { + if (opticalconfigsBuilder_ == null) { + opticalconfigs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); } else { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + opticalconfigsBuilder_.clear(); } + return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { - if (opticalconfigIdBuilder_ == null) { - opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); - opticalconfigId_ = null; + public Builder removeOpticalconfigs(int index) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.remove(index); + onChanged(); + } else { + opticalconfigsBuilder_.remove(index); } - return opticalconfigIdBuilder_; + return this; } - private java.lang.Object config_ = ""; + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) { + return getOpticalconfigsFieldBuilder().getBuilder(index); + } /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public java.lang.String getConfig() { - java.lang.Object ref = config_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - config_ = s; - return s; + public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.get(index); } else { - return (java.lang.String) ref; + return opticalconfigsBuilder_.getMessageOrBuilder(index); } } /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public com.google.protobuf.ByteString getConfigBytes() { - java.lang.Object ref = config_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - config_ = b; - return b; + public java.util.List getOpticalconfigsOrBuilderList() { + if (opticalconfigsBuilder_ != null) { + return opticalconfigsBuilder_.getMessageOrBuilderList(); } else { - return (com.google.protobuf.ByteString) ref; + return java.util.Collections.unmodifiableList(opticalconfigs_); } } /** - * string config = 2; - * @param value The config to set. - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setConfig(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - config_ = value; - bitField0_ |= 0x00000002; - onChanged(); - return this; + public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() { + return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance()); } /** - * string config = 2; - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder clearConfig() { - config_ = getDefaultInstance().getConfig(); - bitField0_ = (bitField0_ & ~0x00000002); - onChanged(); - return this; + public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) { + return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance()); } /** - * string config = 2; - * @param value The bytes for config to set. - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setConfigBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public java.util.List getOpticalconfigsBuilderList() { + return getOpticalconfigsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalconfigsFieldBuilder() { + if (opticalconfigsBuilder_ == null) { + opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + opticalconfigs_ = null; } - checkByteStringIsUtf8(value); - config_ = value; - bitField0_ |= 0x00000002; - onChanged(); - return this; + return opticalconfigsBuilder_; } @java.lang.Override @@ -70483,24 +74245,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfig) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigList) } - // @@protoc_insertion_point(class_scope:context.OpticalConfig) - private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigList) + private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList(); } - public static context.ContextOuterClass.OpticalConfig getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -70515,125 +74277,148 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList) + public interface OpticalConfigEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigEvent) com.google.protobuf.MessageOrBuilder { /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ - java.util.List getOpticalconfigsList(); + boolean hasEvent(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ - context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index); + context.ContextOuterClass.Event getEvent(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - int getOpticalconfigsCount(); + context.ContextOuterClass.EventOrBuilder getEventOrBuilder(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ - java.util.List getOpticalconfigsOrBuilderList(); + boolean hasOpticalconfigId(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. */ - context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index); + context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); + + /** + * .context.OpticalConfigId opticalconfig_id = 2; + */ + context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); } /** - * Protobuf type {@code context.OpticalConfigList} + * Protobuf type {@code context.OpticalConfigEvent} */ - public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList) - OpticalConfigListOrBuilder { + public static final class OpticalConfigEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigEvent) + OpticalConfigEventOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfigList.newBuilder() to construct. - private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfigEvent.newBuilder() to construct. + private OpticalConfigEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfigList() { - opticalconfigs_ = java.util.Collections.emptyList(); + private OpticalConfigEvent() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfigList(); + return new OpticalConfigEvent(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class); } - public static final int OPTICALCONFIGS_FIELD_NUMBER = 1; + public static final int EVENT_FIELD_NUMBER = 1; - @SuppressWarnings("serial") - private java.util.List opticalconfigs_; + private context.ContextOuterClass.Event event_; /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ @java.lang.Override - public java.util.List getOpticalconfigsList() { - return opticalconfigs_; + public boolean hasEvent() { + return event_ != null; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ @java.lang.Override - public java.util.List getOpticalconfigsOrBuilderList() { - return opticalconfigs_; + public context.ContextOuterClass.Event getEvent() { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ @java.lang.Override - public int getOpticalconfigsCount() { - return opticalconfigs_.size(); + public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } + public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 2; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ @java.lang.Override - public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { - return opticalconfigs_.get(index); + public boolean hasOpticalconfigId() { + return opticalconfigId_ != null; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { - return opticalconfigs_.get(index); + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 2; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } private byte memoizedIsInitialized = -1; @@ -70651,8 +74436,11 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < opticalconfigs_.size(); i++) { - output.writeMessage(1, opticalconfigs_.get(i)); + if (event_ != null) { + output.writeMessage(1, getEvent()); + } + if (opticalconfigId_ != null) { + output.writeMessage(2, getOpticalconfigId()); } getUnknownFields().writeTo(output); } @@ -70663,8 +74451,11 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - for (int i = 0; i < opticalconfigs_.size(); i++) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i)); + if (event_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent()); + } + if (opticalconfigId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalconfigId()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -70676,12 +74467,22 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfigEvent)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj; - if (!getOpticalconfigsList().equals(other.getOpticalconfigsList())) + context.ContextOuterClass.OpticalConfigEvent other = (context.ContextOuterClass.OpticalConfigEvent) obj; + if (hasEvent() != other.hasEvent()) return false; + if (hasEvent()) { + if (!getEvent().equals(other.getEvent())) + return false; + } + if (hasOpticalconfigId() != other.hasOpticalconfigId()) + return false; + if (hasOpticalconfigId()) { + if (!getOpticalconfigId().equals(other.getOpticalconfigId())) + return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -70694,60 +74495,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getOpticalconfigsCount() > 0) { - hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigsList().hashCode(); + if (hasEvent()) { + hash = (37 * hash) + EVENT_FIELD_NUMBER; + hash = (53 * hash) + getEvent().hashCode(); + } + if (hasOpticalconfigId()) { + hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigId().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -70760,7 +74565,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigEvent prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -70776,21 +74581,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalConfigList} + * Protobuf type {@code context.OpticalConfigEvent} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList) - context.ContextOuterClass.OpticalConfigListOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigEvent) + context.ContextOuterClass.OpticalConfigEventOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfigEvent.newBuilder() private Builder() { } @@ -70802,29 +74607,32 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - if (opticalconfigsBuilder_ == null) { - opticalconfigs_ = java.util.Collections.emptyList(); - } else { - opticalconfigs_ = null; - opticalconfigsBuilder_.clear(); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); + eventBuilder_ = null; + } + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; } - bitField0_ = (bitField0_ & ~0x00000001); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfigList.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList build() { - context.ContextOuterClass.OpticalConfigList result = buildPartial(); + public context.ContextOuterClass.OpticalConfigEvent build() { + context.ContextOuterClass.OpticalConfigEvent result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -70832,9 +74640,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList buildPartial() { - context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this); - buildPartialRepeatedFields(result); + public context.ContextOuterClass.OpticalConfigEvent buildPartial() { + context.ContextOuterClass.OpticalConfigEvent result = new context.ContextOuterClass.OpticalConfigEvent(this); if (bitField0_ != 0) { buildPartial0(result); } @@ -70842,58 +74649,34 @@ public final class ContextOuterClass { return result; } - private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalConfigList result) { - if (opticalconfigsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.opticalconfigs_ = opticalconfigs_; - } else { - result.opticalconfigs_ = opticalconfigsBuilder_.build(); - } - } - - private void buildPartial0(context.ContextOuterClass.OpticalConfigList result) { + private void buildPartial0(context.ContextOuterClass.OpticalConfigEvent result) { int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfigList) { - return mergeFrom((context.ContextOuterClass.OpticalConfigList) other); + if (other instanceof context.ContextOuterClass.OpticalConfigEvent) { + return mergeFrom((context.ContextOuterClass.OpticalConfigEvent) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) { - if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigEvent other) { + if (other == context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance()) return this; - if (opticalconfigsBuilder_ == null) { - if (!other.opticalconfigs_.isEmpty()) { - if (opticalconfigs_.isEmpty()) { - opticalconfigs_ = other.opticalconfigs_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.addAll(other.opticalconfigs_); - } - onChanged(); - } - } else { - if (!other.opticalconfigs_.isEmpty()) { - if (opticalconfigsBuilder_.isEmpty()) { - opticalconfigsBuilder_.dispose(); - opticalconfigsBuilder_ = null; - opticalconfigs_ = other.opticalconfigs_; - bitField0_ = (bitField0_ & ~0x00000001); - opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null; - } else { - opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_); - } - } + if (other.hasEvent()) { + mergeEvent(other.getEvent()); + } + if (other.hasOpticalconfigId()) { + mergeOpticalconfigId(other.getOpticalconfigId()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -70920,16 +74703,18 @@ public final class ContextOuterClass { break; case 10: { - context.ContextOuterClass.OpticalConfig m = input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry); - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(m); - } else { - opticalconfigsBuilder_.addMessage(m); - } + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; break; } // case 10 + case 18: + { + input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -70953,241 +74738,240 @@ public final class ContextOuterClass { private int bitField0_; - private java.util.List opticalconfigs_ = java.util.Collections.emptyList(); - - private void ensureOpticalconfigsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = new java.util.ArrayList(opticalconfigs_); - bitField0_ |= 0x00000001; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3 opticalconfigsBuilder_; + private context.ContextOuterClass.Event event_; - /** - * repeated .context.OpticalConfig opticalconfigs = 1; - */ - public java.util.List getOpticalconfigsList() { - if (opticalconfigsBuilder_ == null) { - return java.util.Collections.unmodifiableList(opticalconfigs_); - } else { - return opticalconfigsBuilder_.getMessageList(); - } - } + private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ - public int getOpticalconfigsCount() { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.size(); - } else { - return opticalconfigsBuilder_.getCount(); - } + public boolean hasEvent() { + return ((bitField0_ & 0x00000001) != 0); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ - public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.get(index); + public context.ContextOuterClass.Event getEvent() { + if (eventBuilder_ == null) { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } else { - return opticalconfigsBuilder_.getMessage(index); + return eventBuilder_.getMessage(); } } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { + public Builder setEvent(context.ContextOuterClass.Event value) { + if (eventBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.set(index, value); - onChanged(); + event_ = value; } else { - opticalconfigsBuilder_.setMessage(index, value); + eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.set(index, builderForValue.build()); - onChanged(); + public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { + if (eventBuilder_ == null) { + event_ = builderForValue.build(); } else { - opticalconfigsBuilder_.setMessage(index, builderForValue.build()); + eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); + public Builder mergeEvent(context.ContextOuterClass.Event value) { + if (eventBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); + } else { + event_ = value; } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(value); - onChanged(); } else { - opticalconfigsBuilder_.addMessage(value); + eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(index, value); - onChanged(); - } else { - opticalconfigsBuilder_.addMessage(index, value); + public Builder clearEvent() { + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); + eventBuilder_ = null; } + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(builderForValue.build()); - onChanged(); - } else { - opticalconfigsBuilder_.addMessage(builderForValue.build()); - } - return this; + public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEventFieldBuilder().getBuilder(); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(index, builderForValue.build()); - onChanged(); + public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { + if (eventBuilder_ != null) { + return eventBuilder_.getMessageOrBuilder(); } else { - opticalconfigsBuilder_.addMessage(index, builderForValue.build()); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } - return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addAllOpticalconfigs(java.lang.Iterable values) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_); - onChanged(); - } else { - opticalconfigsBuilder_.addAllMessages(values); + private com.google.protobuf.SingleFieldBuilderV3 getEventFieldBuilder() { + if (eventBuilder_ == null) { + eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getEvent(), getParentForChildren(), isClean()); + event_ = null; } - return this; + return eventBuilder_; } + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ - public Builder clearOpticalconfigs() { - if (opticalconfigsBuilder_ == null) { - opticalconfigs_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - } else { - opticalconfigsBuilder_.clear(); - } - return this; + public boolean hasOpticalconfigId() { + return ((bitField0_ & 0x00000002) != 0); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. */ - public Builder removeOpticalconfigs(int index) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.remove(index); - onChanged(); + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + if (opticalconfigIdBuilder_ == null) { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } else { - opticalconfigsBuilder_.remove(index); + return opticalconfigIdBuilder_.getMessage(); } - return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) { - return getOpticalconfigsFieldBuilder().getBuilder(index); + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + opticalconfigId_ = value; + } else { + opticalconfigIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.get(index); + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { + if (opticalconfigIdBuilder_ == null) { + opticalconfigId_ = builderForValue.build(); } else { - return opticalconfigsBuilder_.getMessageOrBuilder(index); + opticalconfigIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public java.util.List getOpticalconfigsOrBuilderList() { - if (opticalconfigsBuilder_ != null) { - return opticalconfigsBuilder_.getMessageOrBuilderList(); + public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) { + getOpticalconfigIdBuilder().mergeFrom(value); + } else { + opticalconfigId_ = value; + } } else { - return java.util.Collections.unmodifiableList(opticalconfigs_); + opticalconfigIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() { - return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance()); + public Builder clearOpticalconfigId() { + bitField0_ = (bitField0_ & ~0x00000002); + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; + } + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) { - return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance()); + public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getOpticalconfigIdFieldBuilder().getBuilder(); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public java.util.List getOpticalconfigsBuilderList() { - return getOpticalconfigsFieldBuilder().getBuilderList(); + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + if (opticalconfigIdBuilder_ != null) { + return opticalconfigIdBuilder_.getMessageOrBuilder(); + } else { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } } - private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalconfigsFieldBuilder() { - if (opticalconfigsBuilder_ == null) { - opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - opticalconfigs_ = null; + /** + * .context.OpticalConfigId opticalconfig_id = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { + if (opticalconfigIdBuilder_ == null) { + opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); + opticalconfigId_ = null; } - return opticalconfigsBuilder_; + return opticalconfigIdBuilder_; } @java.lang.Override @@ -71199,24 +74983,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfigList) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigEvent) } - // @@protoc_insertion_point(class_scope:context.OpticalConfigList) - private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigEvent) + private static final context.ContextOuterClass.OpticalConfigEvent DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigEvent(); } - public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigEvent getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalConfigEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -71231,101 +75015,148 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkId) + public interface OpticalEndPointIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalEndPointId) com.google.protobuf.MessageOrBuilder { /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. + */ + boolean hasDeviceId(); + + /** + * .context.DeviceId device_id = 2; + * @return The deviceId. + */ + context.ContextOuterClass.DeviceId getDeviceId(); + + /** + * .context.DeviceId device_id = 2; + */ + context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder(); + + /** + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. */ - boolean hasOpticalLinkUuid(); + boolean hasEndpointUuid(); /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. */ - context.ContextOuterClass.Uuid getOpticalLinkUuid(); + context.ContextOuterClass.Uuid getEndpointUuid(); /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder(); + context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder(); } /** - * Protobuf type {@code context.OpticalLinkId} + * Protobuf type {@code context.OpticalEndPointId} */ - public static final class OpticalLinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkId) - OpticalLinkIdOrBuilder { + public static final class OpticalEndPointId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalEndPointId) + OpticalEndPointIdOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLinkId.newBuilder() to construct. - private OpticalLinkId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalEndPointId.newBuilder() to construct. + private OpticalEndPointId(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLinkId() { + private OpticalEndPointId() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLinkId(); + return new OpticalEndPointId(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class); + } + + public static final int DEVICE_ID_FIELD_NUMBER = 2; + + private context.ContextOuterClass.DeviceId deviceId_; + + /** + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. + */ + @java.lang.Override + public boolean hasDeviceId() { + return deviceId_ != null; + } + + /** + * .context.DeviceId device_id = 2; + * @return The deviceId. + */ + @java.lang.Override + public context.ContextOuterClass.DeviceId getDeviceId() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + + /** + * .context.DeviceId device_id = 2; + */ + @java.lang.Override + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } - public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 1; + public static final int ENDPOINT_UUID_FIELD_NUMBER = 3; - private context.ContextOuterClass.Uuid opticalLinkUuid_; + private context.ContextOuterClass.Uuid endpointUuid_; /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. */ @java.lang.Override - public boolean hasOpticalLinkUuid() { - return opticalLinkUuid_ != null; + public boolean hasEndpointUuid() { + return endpointUuid_ != null; } /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. */ @java.lang.Override - public context.ContextOuterClass.Uuid getOpticalLinkUuid() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.Uuid getEndpointUuid() { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ @java.lang.Override - public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } private byte memoizedIsInitialized = -1; @@ -71343,8 +75174,11 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (opticalLinkUuid_ != null) { - output.writeMessage(1, getOpticalLinkUuid()); + if (deviceId_ != null) { + output.writeMessage(2, getDeviceId()); + } + if (endpointUuid_ != null) { + output.writeMessage(3, getEndpointUuid()); } getUnknownFields().writeTo(output); } @@ -71355,8 +75189,11 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (opticalLinkUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalLinkUuid()); + if (deviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId()); + } + if (endpointUuid_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -71368,14 +75205,20 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLinkId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalEndPointId)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLinkId other = (context.ContextOuterClass.OpticalLinkId) obj; - if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid()) + context.ContextOuterClass.OpticalEndPointId other = (context.ContextOuterClass.OpticalEndPointId) obj; + if (hasDeviceId() != other.hasDeviceId()) + return false; + if (hasDeviceId()) { + if (!getDeviceId().equals(other.getDeviceId())) + return false; + } + if (hasEndpointUuid() != other.hasEndpointUuid()) return false; - if (hasOpticalLinkUuid()) { - if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid())) + if (hasEndpointUuid()) { + if (!getEndpointUuid().equals(other.getEndpointUuid())) return false; } if (!getUnknownFields().equals(other.getUnknownFields())) @@ -71390,60 +75233,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasOpticalLinkUuid()) { - hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalLinkUuid().hashCode(); + if (hasDeviceId()) { + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + } + if (hasEndpointUuid()) { + hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER; + hash = (53 * hash) + getEndpointUuid().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -71456,7 +75303,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLinkId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalEndPointId prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -71472,21 +75319,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLinkId} + * Protobuf type {@code context.OpticalEndPointId} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkId) - context.ContextOuterClass.OpticalLinkIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalEndPointId) + context.ContextOuterClass.OpticalEndPointIdOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLinkId.newBuilder() + // Construct using context.ContextOuterClass.OpticalEndPointId.newBuilder() private Builder() { } @@ -71498,27 +75345,32 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - opticalLinkUuid_ = null; - if (opticalLinkUuidBuilder_ != null) { - opticalLinkUuidBuilder_.dispose(); - opticalLinkUuidBuilder_ = null; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } + endpointUuid_ = null; + if (endpointUuidBuilder_ != null) { + endpointUuidBuilder_.dispose(); + endpointUuidBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLinkId.getDefaultInstance(); + public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalEndPointId.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId build() { - context.ContextOuterClass.OpticalLinkId result = buildPartial(); + public context.ContextOuterClass.OpticalEndPointId build() { + context.ContextOuterClass.OpticalEndPointId result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -71526,8 +75378,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId buildPartial() { - context.ContextOuterClass.OpticalLinkId result = new context.ContextOuterClass.OpticalLinkId(this); + public context.ContextOuterClass.OpticalEndPointId buildPartial() { + context.ContextOuterClass.OpticalEndPointId result = new context.ContextOuterClass.OpticalEndPointId(this); if (bitField0_ != 0) { buildPartial0(result); } @@ -71535,28 +75387,34 @@ public final class ContextOuterClass { return result; } - private void buildPartial0(context.ContextOuterClass.OpticalLinkId result) { + private void buildPartial0(context.ContextOuterClass.OpticalEndPointId result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { - result.opticalLinkUuid_ = opticalLinkUuidBuilder_ == null ? opticalLinkUuid_ : opticalLinkUuidBuilder_.build(); + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build(); } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLinkId) { - return mergeFrom((context.ContextOuterClass.OpticalLinkId) other); + if (other instanceof context.ContextOuterClass.OpticalEndPointId) { + return mergeFrom((context.ContextOuterClass.OpticalEndPointId) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLinkId other) { - if (other == context.ContextOuterClass.OpticalLinkId.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalEndPointId other) { + if (other == context.ContextOuterClass.OpticalEndPointId.getDefaultInstance()) return this; - if (other.hasOpticalLinkUuid()) { - mergeOpticalLinkUuid(other.getOpticalLinkUuid()); + if (other.hasDeviceId()) { + mergeDeviceId(other.getDeviceId()); + } + if (other.hasEndpointUuid()) { + mergeEndpointUuid(other.getEndpointUuid()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -71581,13 +75439,20 @@ public final class ContextOuterClass { case 0: done = true; break; - case 10: + case 18: { - input.readMessage(getOpticalLinkUuidFieldBuilder().getBuilder(), extensionRegistry); + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000001; break; } - // case 10 + // case 18 + case 26: + { + input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -71611,41 +75476,41 @@ public final class ContextOuterClass { private int bitField0_; - private context.ContextOuterClass.Uuid opticalLinkUuid_; + private context.ContextOuterClass.DeviceId deviceId_; - private com.google.protobuf.SingleFieldBuilderV3 opticalLinkUuidBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 deviceIdBuilder_; /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. */ - public boolean hasOpticalLinkUuid() { + public boolean hasDeviceId() { return ((bitField0_ & 0x00000001) != 0); } /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.DeviceId device_id = 2; + * @return The deviceId. */ - public context.ContextOuterClass.Uuid getOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.DeviceId getDeviceId() { + if (deviceIdBuilder_ == null) { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } else { - return opticalLinkUuidBuilder_.getMessage(); + return deviceIdBuilder_.getMessage(); } } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid value) { - if (opticalLinkUuidBuilder_ == null) { + public Builder setDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalLinkUuid_ = value; + deviceId_ = value; } else { - opticalLinkUuidBuilder_.setMessage(value); + deviceIdBuilder_.setMessage(value); } bitField0_ |= 0x00000001; onChanged(); @@ -71653,13 +75518,13 @@ public final class ContextOuterClass { } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = builderForValue.build(); + public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { + if (deviceIdBuilder_ == null) { + deviceId_ = builderForValue.build(); } else { - opticalLinkUuidBuilder_.setMessage(builderForValue.build()); + deviceIdBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000001; onChanged(); @@ -71667,17 +75532,17 @@ public final class ContextOuterClass { } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder mergeOpticalLinkUuid(context.ContextOuterClass.Uuid value) { - if (opticalLinkUuidBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0) && opticalLinkUuid_ != null && opticalLinkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { - getOpticalLinkUuidBuilder().mergeFrom(value); + public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { - opticalLinkUuid_ = value; + deviceId_ = value; } } else { - opticalLinkUuidBuilder_.mergeFrom(value); + deviceIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000001; onChanged(); @@ -71685,48 +75550,166 @@ public final class ContextOuterClass { } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder clearOpticalLinkUuid() { + public Builder clearDeviceId() { bitField0_ = (bitField0_ & ~0x00000001); - opticalLinkUuid_ = null; - if (opticalLinkUuidBuilder_ != null) { - opticalLinkUuidBuilder_.dispose(); - opticalLinkUuidBuilder_ = null; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; } onChanged(); return this; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public context.ContextOuterClass.Uuid.Builder getOpticalLinkUuidBuilder() { + public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { bitField0_ |= 0x00000001; onChanged(); - return getOpticalLinkUuidFieldBuilder().getBuilder(); + return getDeviceIdFieldBuilder().getBuilder(); + } + + /** + * .context.DeviceId device_id = 2; + */ + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + if (deviceIdBuilder_ != null) { + return deviceIdBuilder_.getMessageOrBuilder(); + } else { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + } + + /** + * .context.DeviceId device_id = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3 getDeviceIdFieldBuilder() { + if (deviceIdBuilder_ == null) { + deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDeviceId(), getParentForChildren(), isClean()); + deviceId_ = null; + } + return deviceIdBuilder_; + } + + private context.ContextOuterClass.Uuid endpointUuid_; + + private com.google.protobuf.SingleFieldBuilderV3 endpointUuidBuilder_; + + /** + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. + */ + public boolean hasEndpointUuid() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. + */ + public context.ContextOuterClass.Uuid getEndpointUuid() { + if (endpointUuidBuilder_ == null) { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; + } else { + return endpointUuidBuilder_.getMessage(); + } + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) { + if (endpointUuidBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endpointUuid_ = value; + } else { + endpointUuidBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { + if (endpointUuidBuilder_ == null) { + endpointUuid_ = builderForValue.build(); + } else { + endpointUuidBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) { + if (endpointUuidBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getEndpointUuidBuilder().mergeFrom(value); + } else { + endpointUuid_ = value; + } + } else { + endpointUuidBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder clearEndpointUuid() { + bitField0_ = (bitField0_ & ~0x00000002); + endpointUuid_ = null; + if (endpointUuidBuilder_ != null) { + endpointUuidBuilder_.dispose(); + endpointUuidBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getEndpointUuidFieldBuilder().getBuilder(); } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() { - if (opticalLinkUuidBuilder_ != null) { - return opticalLinkUuidBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() { + if (endpointUuidBuilder_ != null) { + return endpointUuidBuilder_.getMessageOrBuilder(); } else { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalLinkUuidFieldBuilder() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalLinkUuid(), getParentForChildren(), isClean()); - opticalLinkUuid_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getEndpointUuidFieldBuilder() { + if (endpointUuidBuilder_ == null) { + endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getEndpointUuid(), getParentForChildren(), isClean()); + endpointUuid_ = null; } - return opticalLinkUuidBuilder_; + return endpointUuidBuilder_; } @java.lang.Override @@ -71738,24 +75721,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLinkId) + // @@protoc_insertion_point(builder_scope:context.OpticalEndPointId) } - // @@protoc_insertion_point(class_scope:context.OpticalLinkId) - private static final context.ContextOuterClass.OpticalLinkId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalEndPointId) + private static final context.ContextOuterClass.OpticalEndPointId DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalEndPointId(); } - public static context.ContextOuterClass.OpticalLinkId getDefaultInstance() { + public static context.ContextOuterClass.OpticalEndPointId getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalEndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -71770,101 +75753,125 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface FiberIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.FiberId) + public interface OpticalLinkListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkList) com.google.protobuf.MessageOrBuilder { /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; + */ + java.util.List getOpticalLinksList(); + + /** + * repeated .context.OpticalLink optical_links = 1; */ - boolean hasFiberUuid(); + context.ContextOuterClass.OpticalLink getOpticalLinks(int index); /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ - context.ContextOuterClass.Uuid getFiberUuid(); + int getOpticalLinksCount(); /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder(); + java.util.List getOpticalLinksOrBuilderList(); + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index); } /** - * Protobuf type {@code context.FiberId} + * Protobuf type {@code context.OpticalLinkList} */ - public static final class FiberId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.FiberId) - FiberIdOrBuilder { + public static final class OpticalLinkList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkList) + OpticalLinkListOrBuilder { private static final long serialVersionUID = 0L; - // Use FiberId.newBuilder() to construct. - private FiberId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLinkList.newBuilder() to construct. + private OpticalLinkList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private FiberId() { + private OpticalLinkList() { + opticalLinks_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new FiberId(); + return new OpticalLinkList(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class); } - public static final int FIBER_UUID_FIELD_NUMBER = 1; + public static final int OPTICAL_LINKS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List opticalLinks_; + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + @java.lang.Override + public java.util.List getOpticalLinksList() { + return opticalLinks_; + } - private context.ContextOuterClass.Uuid fiberUuid_; + /** + * repeated .context.OpticalLink optical_links = 1; + */ + @java.lang.Override + public java.util.List getOpticalLinksOrBuilderList() { + return opticalLinks_; + } /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public boolean hasFiberUuid() { - return fiberUuid_ != null; + public int getOpticalLinksCount() { + return opticalLinks_.size(); } /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public context.ContextOuterClass.Uuid getFiberUuid() { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + return opticalLinks_.get(index); } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + return opticalLinks_.get(index); } private byte memoizedIsInitialized = -1; @@ -71882,8 +75889,8 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (fiberUuid_ != null) { - output.writeMessage(1, getFiberUuid()); + for (int i = 0; i < opticalLinks_.size(); i++) { + output.writeMessage(1, opticalLinks_.get(i)); } getUnknownFields().writeTo(output); } @@ -71894,8 +75901,8 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (fiberUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getFiberUuid()); + for (int i = 0; i < opticalLinks_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalLinks_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -71907,16 +75914,12 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.FiberId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLinkList)) { return super.equals(obj); } - context.ContextOuterClass.FiberId other = (context.ContextOuterClass.FiberId) obj; - if (hasFiberUuid() != other.hasFiberUuid()) + context.ContextOuterClass.OpticalLinkList other = (context.ContextOuterClass.OpticalLinkList) obj; + if (!getOpticalLinksList().equals(other.getOpticalLinksList())) return false; - if (hasFiberUuid()) { - if (!getFiberUuid().equals(other.getFiberUuid())) - return false; - } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -71929,60 +75932,60 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasFiberUuid()) { - hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER; - hash = (53 * hash) + getFiberUuid().hashCode(); + if (getOpticalLinksCount() > 0) { + hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinksList().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -71995,7 +75998,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.FiberId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLinkList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -72011,21 +76014,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.FiberId} + * Protobuf type {@code context.OpticalLinkList} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.FiberId) - context.ContextOuterClass.FiberIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkList) + context.ContextOuterClass.OpticalLinkListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class); } - // Construct using context.ContextOuterClass.FiberId.newBuilder() + // Construct using context.ContextOuterClass.OpticalLinkList.newBuilder() private Builder() { } @@ -72037,27 +76040,29 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - fiberUuid_ = null; - if (fiberUuidBuilder_ != null) { - fiberUuidBuilder_.dispose(); - fiberUuidBuilder_ = null; + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + } else { + opticalLinks_ = null; + opticalLinksBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override - public context.ContextOuterClass.FiberId getDefaultInstanceForType() { - return context.ContextOuterClass.FiberId.getDefaultInstance(); + public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLinkList.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.FiberId build() { - context.ContextOuterClass.FiberId result = buildPartial(); + public context.ContextOuterClass.OpticalLinkList build() { + context.ContextOuterClass.OpticalLinkList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -72065,8 +76070,9 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.FiberId buildPartial() { - context.ContextOuterClass.FiberId result = new context.ContextOuterClass.FiberId(this); + public context.ContextOuterClass.OpticalLinkList buildPartial() { + context.ContextOuterClass.OpticalLinkList result = new context.ContextOuterClass.OpticalLinkList(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -72074,28 +76080,58 @@ public final class ContextOuterClass { return result; } - private void buildPartial0(context.ContextOuterClass.FiberId result) { - int from_bitField0_ = bitField0_; - if (((from_bitField0_ & 0x00000001) != 0)) { - result.fiberUuid_ = fiberUuidBuilder_ == null ? fiberUuid_ : fiberUuidBuilder_.build(); + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLinkList result) { + if (opticalLinksBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.opticalLinks_ = opticalLinks_; + } else { + result.opticalLinks_ = opticalLinksBuilder_.build(); } } + private void buildPartial0(context.ContextOuterClass.OpticalLinkList result) { + int from_bitField0_ = bitField0_; + } + @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.FiberId) { - return mergeFrom((context.ContextOuterClass.FiberId) other); + if (other instanceof context.ContextOuterClass.OpticalLinkList) { + return mergeFrom((context.ContextOuterClass.OpticalLinkList) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.FiberId other) { - if (other == context.ContextOuterClass.FiberId.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalLinkList other) { + if (other == context.ContextOuterClass.OpticalLinkList.getDefaultInstance()) return this; - if (other.hasFiberUuid()) { - mergeFiberUuid(other.getFiberUuid()); + if (opticalLinksBuilder_ == null) { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinks_.isEmpty()) { + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOpticalLinksIsMutable(); + opticalLinks_.addAll(other.opticalLinks_); + } + onChanged(); + } + } else { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinksBuilder_.isEmpty()) { + opticalLinksBuilder_.dispose(); + opticalLinksBuilder_ = null; + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000001); + opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null; + } else { + opticalLinksBuilder_.addAllMessages(other.opticalLinks_); + } + } } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -72122,8 +76158,13 @@ public final class ContextOuterClass { break; case 10: { - input.readMessage(getFiberUuidFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000001; + context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry); + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(m); + } else { + opticalLinksBuilder_.addMessage(m); + } break; } // case 10 @@ -72150,122 +76191,241 @@ public final class ContextOuterClass { private int bitField0_; - private context.ContextOuterClass.Uuid fiberUuid_; + private java.util.List opticalLinks_ = java.util.Collections.emptyList(); + + private void ensureOpticalLinksIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + opticalLinks_ = new java.util.ArrayList(opticalLinks_); + bitField0_ |= 0x00000001; + } + } - private com.google.protobuf.SingleFieldBuilderV3 fiberUuidBuilder_; + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinksBuilder_; /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; */ - public boolean hasFiberUuid() { - return ((bitField0_ & 0x00000001) != 0); + public java.util.List getOpticalLinksList() { + if (opticalLinksBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinks_); + } else { + return opticalLinksBuilder_.getMessageList(); + } } /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.Uuid getFiberUuid() { - if (fiberUuidBuilder_ == null) { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + public int getOpticalLinksCount() { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.size(); } else { - return fiberUuidBuilder_.getMessage(); + return opticalLinksBuilder_.getCount(); } } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder setFiberUuid(context.ContextOuterClass.Uuid value) { - if (fiberUuidBuilder_ == null) { + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessage(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - fiberUuid_ = value; + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, value); + onChanged(); } else { - fiberUuidBuilder_.setMessage(value); + opticalLinksBuilder_.setMessage(index, value); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder setFiberUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = builderForValue.build(); + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, builderForValue.build()); + onChanged(); } else { - fiberUuidBuilder_.setMessage(builderForValue.build()); + opticalLinksBuilder_.setMessage(index, builderForValue.build()); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder mergeFiberUuid(context.ContextOuterClass.Uuid value) { - if (fiberUuidBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0) && fiberUuid_ != null && fiberUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { - getFiberUuidBuilder().mergeFrom(value); - } else { - fiberUuid_ = value; + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(value); + onChanged(); } else { - fiberUuidBuilder_.mergeFrom(value); + opticalLinksBuilder_.addMessage(value); } - bitField0_ |= 0x00000001; - onChanged(); return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder clearFiberUuid() { - bitField0_ = (bitField0_ & ~0x00000001); - fiberUuid_ = null; - if (fiberUuidBuilder_ != null) { - fiberUuidBuilder_.dispose(); - fiberUuidBuilder_ = null; + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, value); } - onChanged(); return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.Uuid.Builder getFiberUuidBuilder() { - bitField0_ |= 0x00000001; - onChanged(); - return getFiberUuidFieldBuilder().getBuilder(); + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(builderForValue.build()); + } + return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() { - if (fiberUuidBuilder_ != null) { - return fiberUuidBuilder_.getMessageOrBuilder(); + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, builderForValue.build()); + onChanged(); } else { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + opticalLinksBuilder_.addMessage(index, builderForValue.build()); } + return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getFiberUuidFieldBuilder() { - if (fiberUuidBuilder_ == null) { - fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getFiberUuid(), getParentForChildren(), isClean()); - fiberUuid_ = null; + public Builder addAllOpticalLinks(java.lang.Iterable values) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_); + onChanged(); + } else { + opticalLinksBuilder_.addAllMessages(values); } - return fiberUuidBuilder_; + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder clearOpticalLinks() { + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + opticalLinksBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder removeOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.remove(index); + onChanged(); + } else { + opticalLinksBuilder_.remove(index); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().getBuilder(index); + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public java.util.List getOpticalLinksOrBuilderList() { + if (opticalLinksBuilder_ != null) { + return opticalLinksBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinks_); + } + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() { + return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public java.util.List getOpticalLinksBuilderList() { + return getOpticalLinksFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinksFieldBuilder() { + if (opticalLinksBuilder_ == null) { + opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinks_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + opticalLinks_ = null; + } + return opticalLinksBuilder_; } @java.lang.Override @@ -72277,24 +76437,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.FiberId) + // @@protoc_insertion_point(builder_scope:context.OpticalLinkList) } - // @@protoc_insertion_point(class_scope:context.FiberId) - private static final context.ContextOuterClass.FiberId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLinkList) + private static final context.ContextOuterClass.OpticalLinkList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.FiberId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkList(); } - public static context.ContextOuterClass.FiberId getDefaultInstance() { + public static context.ContextOuterClass.OpticalLinkList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public FiberId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalLinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -72309,255 +76469,248 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.FiberId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface FiberOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Fiber) + public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails) com.google.protobuf.MessageOrBuilder { /** - * string ID = 10; - * @return The iD. - */ - java.lang.String getID(); - - /** - * string ID = 10; - * @return The bytes for iD. + * float length = 1; + * @return The length. */ - com.google.protobuf.ByteString getIDBytes(); + float getLength(); /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ java.lang.String getSrcPort(); /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ com.google.protobuf.ByteString getSrcPortBytes(); /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ java.lang.String getDstPort(); /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ com.google.protobuf.ByteString getDstPortBytes(); /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ java.lang.String getLocalPeerPort(); /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ com.google.protobuf.ByteString getLocalPeerPortBytes(); /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ java.lang.String getRemotePeerPort(); /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ com.google.protobuf.ByteString getRemotePeerPortBytes(); /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. + * bool used = 6; + * @return The used. */ - java.util.List getCSlotsList(); + boolean getUsed(); /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. + * map<string, int32> c_slots = 7; */ int getCSlotsCount(); /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * map<string, int32> c_slots = 7; */ - int getCSlots(int index); + boolean containsCSlots(java.lang.String key); /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * Use {@link #getCSlotsMap()} instead. */ - java.util.List getLSlotsList(); + @java.lang.Deprecated + java.util.Map getCSlots(); + + /** + * map<string, int32> c_slots = 7; + */ + java.util.Map getCSlotsMap(); + + /** + * map<string, int32> c_slots = 7; + */ + int getCSlotsOrDefault(java.lang.String key, int defaultValue); + + /** + * map<string, int32> c_slots = 7; + */ + int getCSlotsOrThrow(java.lang.String key); /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> l_slots = 8; */ int getLSlotsCount(); /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> l_slots = 8; */ - int getLSlots(int index); + boolean containsLSlots(java.lang.String key); /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. + * Use {@link #getLSlotsMap()} instead. */ - java.util.List getSSlotsList(); + @java.lang.Deprecated + java.util.Map getLSlots(); /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. + * map<string, int32> l_slots = 8; */ - int getSSlotsCount(); + java.util.Map getLSlotsMap(); /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. + * map<string, int32> l_slots = 8; */ - int getSSlots(int index); + int getLSlotsOrDefault(java.lang.String key, int defaultValue); /** - * float length = 8; - * @return The length. + * map<string, int32> l_slots = 8; */ - float getLength(); + int getLSlotsOrThrow(java.lang.String key); /** - * bool used = 9; - * @return The used. + * map<string, int32> s_slots = 9; */ - boolean getUsed(); + int getSSlotsCount(); /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ - boolean hasFiberUuid(); + boolean containsSSlots(java.lang.String key); + + /** + * Use {@link #getSSlotsMap()} instead. + */ + @java.lang.Deprecated + java.util.Map getSSlots(); /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * map<string, int32> s_slots = 9; */ - context.ContextOuterClass.FiberId getFiberUuid(); + java.util.Map getSSlotsMap(); /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder(); + int getSSlotsOrDefault(java.lang.String key, int defaultValue); + + /** + * map<string, int32> s_slots = 9; + */ + int getSSlotsOrThrow(java.lang.String key); } /** - * Protobuf type {@code context.Fiber} + * Protobuf type {@code context.OpticalLinkDetails} */ - public static final class Fiber extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Fiber) - FiberOrBuilder { + public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails) + OpticalLinkDetailsOrBuilder { private static final long serialVersionUID = 0L; - // Use Fiber.newBuilder() to construct. - private Fiber(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLinkDetails.newBuilder() to construct. + private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private Fiber() { - iD_ = ""; + private OpticalLinkDetails() { srcPort_ = ""; dstPort_ = ""; localPeerPort_ = ""; remotePeerPort_ = ""; - cSlots_ = emptyIntList(); - lSlots_ = emptyIntList(); - sSlots_ = emptyIntList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new Fiber(); + return new OpticalLinkDetails(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; } + @SuppressWarnings({ "rawtypes" }) @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class); + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch(number) { + case 7: + return internalGetCSlots(); + case 8: + return internalGetLSlots(); + case 9: + return internalGetSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } } - public static final int ID_FIELD_NUMBER = 10; - - @SuppressWarnings("serial") - private volatile java.lang.Object iD_ = ""; - - /** - * string ID = 10; - * @return The iD. - */ @java.lang.Override - public java.lang.String getID() { - java.lang.Object ref = iD_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - iD_ = s; - return s; - } + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); } + public static final int LENGTH_FIELD_NUMBER = 1; + + private float length_ = 0F; + /** - * string ID = 10; - * @return The bytes for iD. + * float length = 1; + * @return The length. */ @java.lang.Override - public com.google.protobuf.ByteString getIDBytes() { - java.lang.Object ref = iD_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - iD_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public float getLength() { + return length_; } - public static final int SRC_PORT_FIELD_NUMBER = 1; + public static final int SRC_PORT_FIELD_NUMBER = 2; @SuppressWarnings("serial") private volatile java.lang.Object srcPort_ = ""; /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ @java.lang.Override @@ -72574,7 +76727,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ @java.lang.Override @@ -72589,13 +76742,13 @@ public final class ContextOuterClass { } } - public static final int DST_PORT_FIELD_NUMBER = 2; + public static final int DST_PORT_FIELD_NUMBER = 3; @SuppressWarnings("serial") private volatile java.lang.Object dstPort_ = ""; /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ @java.lang.Override @@ -72612,7 +76765,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ @java.lang.Override @@ -72627,13 +76780,13 @@ public final class ContextOuterClass { } } - public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 3; + public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 4; @SuppressWarnings("serial") private volatile java.lang.Object localPeerPort_ = ""; /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ @java.lang.Override @@ -72650,7 +76803,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ @java.lang.Override @@ -72665,13 +76818,13 @@ public final class ContextOuterClass { } } - public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 4; + public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 5; @SuppressWarnings("serial") private volatile java.lang.Object remotePeerPort_ = ""; /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ @java.lang.Override @@ -72688,7 +76841,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ @java.lang.Override @@ -72703,159 +76856,245 @@ public final class ContextOuterClass { } } - public static final int C_SLOTS_FIELD_NUMBER = 5; + public static final int USED_FIELD_NUMBER = 6; - @SuppressWarnings("serial") - private com.google.protobuf.Internal.IntList cSlots_; + private boolean used_ = false; /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. + * bool used = 6; + * @return The used. */ @java.lang.Override - public java.util.List getCSlotsList() { + public boolean getUsed() { + return used_; + } + + public static final int C_SLOTS_FIELD_NUMBER = 7; + + private static final class CSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); + } + + @SuppressWarnings("serial") + private com.google.protobuf.MapField cSlots_; + + private com.google.protobuf.MapField internalGetCSlots() { + if (cSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry); + } return cSlots_; } - /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. - */ public int getCSlotsCount() { - return cSlots_.size(); + return internalGetCSlots().getMap().size(); } /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getCSlots(int index) { - return cSlots_.getInt(index); + @java.lang.Override + public boolean containsCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetCSlots().getMap().containsKey(key); } - private int cSlotsMemoizedSerializedSize = -1; - - public static final int L_SLOTS_FIELD_NUMBER = 6; - - @SuppressWarnings("serial") - private com.google.protobuf.Internal.IntList lSlots_; + /** + * Use {@link #getCSlotsMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCSlots() { + return getCSlotsMap(); + } /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * map<string, int32> c_slots = 7; */ @java.lang.Override - public java.util.List getLSlotsList() { - return lSlots_; + public java.util.Map getCSlotsMap() { + return internalGetCSlots().getMap(); } /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> c_slots = 7; */ - public int getLSlotsCount() { - return lSlots_.size(); + @java.lang.Override + public int getCSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getLSlots(int index) { - return lSlots_.getInt(index); + @java.lang.Override + public int getCSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); } - private int lSlotsMemoizedSerializedSize = -1; + public static final int L_SLOTS_FIELD_NUMBER = 8; - public static final int S_SLOTS_FIELD_NUMBER = 7; + private static final class LSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); + } @SuppressWarnings("serial") - private com.google.protobuf.Internal.IntList sSlots_; + private com.google.protobuf.MapField lSlots_; + + private com.google.protobuf.MapField internalGetLSlots() { + if (lSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry); + } + return lSlots_; + } + + public int getLSlotsCount() { + return internalGetLSlots().getMap().size(); + } /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. + * map<string, int32> l_slots = 8; */ @java.lang.Override - public java.util.List getSSlotsList() { - return sSlots_; + public boolean containsLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetLSlots().getMap().containsKey(key); } /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. + * Use {@link #getLSlotsMap()} instead. */ - public int getSSlotsCount() { - return sSlots_.size(); + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getLSlots() { + return getLSlotsMap(); } /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. + * map<string, int32> l_slots = 8; + */ + @java.lang.Override + public java.util.Map getLSlotsMap() { + return internalGetLSlots().getMap(); + } + + /** + * map<string, int32> l_slots = 8; + */ + @java.lang.Override + public int getLSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + + /** + * map<string, int32> l_slots = 8; */ - public int getSSlots(int index) { - return sSlots_.getInt(index); + @java.lang.Override + public int getLSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public static final int S_SLOTS_FIELD_NUMBER = 9; + + private static final class SSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); } - private int sSlotsMemoizedSerializedSize = -1; + @SuppressWarnings("serial") + private com.google.protobuf.MapField sSlots_; - public static final int LENGTH_FIELD_NUMBER = 8; + private com.google.protobuf.MapField internalGetSSlots() { + if (sSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + return sSlots_; + } - private float length_ = 0F; + public int getSSlotsCount() { + return internalGetSSlots().getMap().size(); + } /** - * float length = 8; - * @return The length. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public float getLength() { - return length_; + public boolean containsSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetSSlots().getMap().containsKey(key); } - public static final int USED_FIELD_NUMBER = 9; - - private boolean used_ = false; - /** - * bool used = 9; - * @return The used. + * Use {@link #getSSlotsMap()} instead. */ @java.lang.Override - public boolean getUsed() { - return used_; + @java.lang.Deprecated + public java.util.Map getSSlots() { + return getSSlotsMap(); } - public static final int FIBER_UUID_FIELD_NUMBER = 11; - - private context.ContextOuterClass.FiberId fiberUuid_; - /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public boolean hasFiberUuid() { - return fiberUuid_ != null; + public java.util.Map getSSlotsMap() { + return internalGetSSlots().getMap(); } /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public context.ContextOuterClass.FiberId getFiberUuid() { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; + public int getSSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetSSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ @java.lang.Override - public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; + public int getSSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetSSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); } private byte memoizedIsInitialized = -1; @@ -72873,52 +77112,27 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - getSerializedSize(); + if (java.lang.Float.floatToRawIntBits(length_) != 0) { + output.writeFloat(1, length_); + } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcPort_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, srcPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstPort_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dstPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, localPeerPort_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, localPeerPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remotePeerPort_); - } - if (getCSlotsList().size() > 0) { - output.writeUInt32NoTag(42); - output.writeUInt32NoTag(cSlotsMemoizedSerializedSize); - } - for (int i = 0; i < cSlots_.size(); i++) { - output.writeInt32NoTag(cSlots_.getInt(i)); - } - if (getLSlotsList().size() > 0) { - output.writeUInt32NoTag(50); - output.writeUInt32NoTag(lSlotsMemoizedSerializedSize); - } - for (int i = 0; i < lSlots_.size(); i++) { - output.writeInt32NoTag(lSlots_.getInt(i)); - } - if (getSSlotsList().size() > 0) { - output.writeUInt32NoTag(58); - output.writeUInt32NoTag(sSlotsMemoizedSerializedSize); - } - for (int i = 0; i < sSlots_.size(); i++) { - output.writeInt32NoTag(sSlots_.getInt(i)); - } - if (java.lang.Float.floatToRawIntBits(length_) != 0) { - output.writeFloat(8, length_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, remotePeerPort_); } if (used_ != false) { - output.writeBool(9, used_); - } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iD_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 10, iD_); - } - if (fiberUuid_ != null) { - output.writeMessage(11, getFiberUuid()); + output.writeBool(6, used_); } + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetCSlots(), CSlotsDefaultEntryHolder.defaultEntry, 7); + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetLSlots(), LSlotsDefaultEntryHolder.defaultEntry, 8); + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetSSlots(), SSlotsDefaultEntryHolder.defaultEntry, 9); getUnknownFields().writeTo(output); } @@ -72928,65 +77142,35 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; + if (java.lang.Float.floatToRawIntBits(length_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_); + } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcPort_); + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, srcPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstPort_); + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, dstPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, localPeerPort_); + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, localPeerPort_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remotePeerPort_); - } - { - int dataSize = 0; - for (int i = 0; i < cSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(cSlots_.getInt(i)); - } - size += dataSize; - if (!getCSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - cSlotsMemoizedSerializedSize = dataSize; - } - { - int dataSize = 0; - for (int i = 0; i < lSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(lSlots_.getInt(i)); - } - size += dataSize; - if (!getLSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - lSlotsMemoizedSerializedSize = dataSize; - } - { - int dataSize = 0; - for (int i = 0; i < sSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(sSlots_.getInt(i)); - } - size += dataSize; - if (!getSSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - sSlotsMemoizedSerializedSize = dataSize; - } - if (java.lang.Float.floatToRawIntBits(length_) != 0) { - size += com.google.protobuf.CodedOutputStream.computeFloatSize(8, length_); + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, remotePeerPort_); } if (used_ != false) { - size += com.google.protobuf.CodedOutputStream.computeBoolSize(9, used_); + size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, used_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(iD_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, iD_); + for (java.util.Map.Entry entry : internalGetCSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry cSlots__ = CSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, cSlots__); } - if (fiberUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getFiberUuid()); + for (java.util.Map.Entry entry : internalGetLSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry lSlots__ = LSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, lSlots__); + } + for (java.util.Map.Entry entry : internalGetSSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry sSlots__ = SSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, sSlots__); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -72998,11 +77182,11 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.Fiber)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) { return super.equals(obj); } - context.ContextOuterClass.Fiber other = (context.ContextOuterClass.Fiber) obj; - if (!getID().equals(other.getID())) + context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj; + if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) return false; if (!getSrcPort().equals(other.getSrcPort())) return false; @@ -73012,22 +77196,14 @@ public final class ContextOuterClass { return false; if (!getRemotePeerPort().equals(other.getRemotePeerPort())) return false; - if (!getCSlotsList().equals(other.getCSlotsList())) - return false; - if (!getLSlotsList().equals(other.getLSlotsList())) - return false; - if (!getSSlotsList().equals(other.getSSlotsList())) + if (getUsed() != other.getUsed()) return false; - if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) + if (!internalGetCSlots().equals(other.internalGetCSlots())) return false; - if (getUsed() != other.getUsed()) + if (!internalGetLSlots().equals(other.internalGetLSlots())) return false; - if (hasFiberUuid() != other.hasFiberUuid()) + if (!internalGetSSlots().equals(other.internalGetSSlots())) return false; - if (hasFiberUuid()) { - if (!getFiberUuid().equals(other.getFiberUuid())) - return false; - } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -73040,8 +77216,8 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + ID_FIELD_NUMBER; - hash = (53 * hash) + getID().hashCode(); + hash = (37 * hash) + LENGTH_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); hash = (37 * hash) + SRC_PORT_FIELD_NUMBER; hash = (53 * hash) + getSrcPort().hashCode(); hash = (37 * hash) + DST_PORT_FIELD_NUMBER; @@ -73050,76 +77226,70 @@ public final class ContextOuterClass { hash = (53 * hash) + getLocalPeerPort().hashCode(); hash = (37 * hash) + REMOTE_PEER_PORT_FIELD_NUMBER; hash = (53 * hash) + getRemotePeerPort().hashCode(); - if (getCSlotsCount() > 0) { + hash = (37 * hash) + USED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed()); + if (!internalGetCSlots().getMap().isEmpty()) { hash = (37 * hash) + C_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getCSlotsList().hashCode(); + hash = (53 * hash) + internalGetCSlots().hashCode(); } - if (getLSlotsCount() > 0) { + if (!internalGetLSlots().getMap().isEmpty()) { hash = (37 * hash) + L_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getLSlotsList().hashCode(); + hash = (53 * hash) + internalGetLSlots().hashCode(); } - if (getSSlotsCount() > 0) { + if (!internalGetSSlots().getMap().isEmpty()) { hash = (37 * hash) + S_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getSSlotsList().hashCode(); - } - hash = (37 * hash) + LENGTH_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); - hash = (37 * hash) + USED_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed()); - if (hasFiberUuid()) { - hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER; - hash = (53 * hash) + getFiberUuid().hashCode(); + hash = (53 * hash) + internalGetSSlots().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -73132,7 +77302,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.Fiber prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -73148,21 +77318,49 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.Fiber} + * Protobuf type {@code context.OpticalLinkDetails} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Fiber) - context.ContextOuterClass.FiberOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails) + context.ContextOuterClass.OpticalLinkDetailsOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + } + + @SuppressWarnings({ "rawtypes" }) + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch(number) { + case 7: + return internalGetCSlots(); + case 8: + return internalGetLSlots(); + case 9: + return internalGetSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @SuppressWarnings({ "rawtypes" }) + protected com.google.protobuf.MapField internalGetMutableMapField(int number) { + switch(number) { + case 7: + return internalGetMutableCSlots(); + case 8: + return internalGetMutableLSlots(); + case 9: + return internalGetMutableSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); } - // Construct using context.ContextOuterClass.Fiber.newBuilder() + // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder() private Builder() { } @@ -73174,37 +77372,31 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - iD_ = ""; + length_ = 0F; srcPort_ = ""; dstPort_ = ""; localPeerPort_ = ""; remotePeerPort_ = ""; - cSlots_ = emptyIntList(); - lSlots_ = emptyIntList(); - sSlots_ = emptyIntList(); - length_ = 0F; used_ = false; - fiberUuid_ = null; - if (fiberUuidBuilder_ != null) { - fiberUuidBuilder_.dispose(); - fiberUuidBuilder_ = null; - } + internalGetMutableCSlots().clear(); + internalGetMutableLSlots().clear(); + internalGetMutableSSlots().clear(); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; } @java.lang.Override - public context.ContextOuterClass.Fiber getDefaultInstanceForType() { - return context.ContextOuterClass.Fiber.getDefaultInstance(); + public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.Fiber build() { - context.ContextOuterClass.Fiber result = buildPartial(); + public context.ContextOuterClass.OpticalLinkDetails build() { + context.ContextOuterClass.OpticalLinkDetails result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -73212,9 +77404,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.Fiber buildPartial() { - context.ContextOuterClass.Fiber result = new context.ContextOuterClass.Fiber(this); - buildPartialRepeatedFields(result); + public context.ContextOuterClass.OpticalLinkDetails buildPartial() { + context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this); if (bitField0_ != 0) { buildPartial0(result); } @@ -73222,28 +77413,10 @@ public final class ContextOuterClass { return result; } - private void buildPartialRepeatedFields(context.ContextOuterClass.Fiber result) { - if (((bitField0_ & 0x00000020) != 0)) { - cSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000020); - } - result.cSlots_ = cSlots_; - if (((bitField0_ & 0x00000040) != 0)) { - lSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000040); - } - result.lSlots_ = lSlots_; - if (((bitField0_ & 0x00000080) != 0)) { - sSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000080); - } - result.sSlots_ = sSlots_; - } - - private void buildPartial0(context.ContextOuterClass.Fiber result) { + private void buildPartial0(context.ContextOuterClass.OpticalLinkDetails result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { - result.iD_ = iD_; + result.length_ = length_; } if (((from_bitField0_ & 0x00000002) != 0)) { result.srcPort_ = srcPort_; @@ -73257,34 +77430,38 @@ public final class ContextOuterClass { if (((from_bitField0_ & 0x00000010) != 0)) { result.remotePeerPort_ = remotePeerPort_; } - if (((from_bitField0_ & 0x00000100) != 0)) { - result.length_ = length_; - } - if (((from_bitField0_ & 0x00000200) != 0)) { + if (((from_bitField0_ & 0x00000020) != 0)) { result.used_ = used_; } - if (((from_bitField0_ & 0x00000400) != 0)) { - result.fiberUuid_ = fiberUuidBuilder_ == null ? fiberUuid_ : fiberUuidBuilder_.build(); + if (((from_bitField0_ & 0x00000040) != 0)) { + result.cSlots_ = internalGetCSlots(); + result.cSlots_.makeImmutable(); + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.lSlots_ = internalGetLSlots(); + result.lSlots_.makeImmutable(); + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.sSlots_ = internalGetSSlots(); + result.sSlots_.makeImmutable(); } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.Fiber) { - return mergeFrom((context.ContextOuterClass.Fiber) other); + if (other instanceof context.ContextOuterClass.OpticalLinkDetails) { + return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.Fiber other) { - if (other == context.ContextOuterClass.Fiber.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) { + if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) return this; - if (!other.getID().isEmpty()) { - iD_ = other.iD_; - bitField0_ |= 0x00000001; - onChanged(); + if (other.getLength() != 0F) { + setLength(other.getLength()); } if (!other.getSrcPort().isEmpty()) { srcPort_ = other.srcPort_; @@ -73306,45 +77483,15 @@ public final class ContextOuterClass { bitField0_ |= 0x00000010; onChanged(); } - if (!other.cSlots_.isEmpty()) { - if (cSlots_.isEmpty()) { - cSlots_ = other.cSlots_; - bitField0_ = (bitField0_ & ~0x00000020); - } else { - ensureCSlotsIsMutable(); - cSlots_.addAll(other.cSlots_); - } - onChanged(); - } - if (!other.lSlots_.isEmpty()) { - if (lSlots_.isEmpty()) { - lSlots_ = other.lSlots_; - bitField0_ = (bitField0_ & ~0x00000040); - } else { - ensureLSlotsIsMutable(); - lSlots_.addAll(other.lSlots_); - } - onChanged(); - } - if (!other.sSlots_.isEmpty()) { - if (sSlots_.isEmpty()) { - sSlots_ = other.sSlots_; - bitField0_ = (bitField0_ & ~0x00000080); - } else { - ensureSSlotsIsMutable(); - sSlots_.addAll(other.sSlots_); - } - onChanged(); - } - if (other.getLength() != 0F) { - setLength(other.getLength()); - } if (other.getUsed() != false) { setUsed(other.getUsed()); } - if (other.hasFiberUuid()) { - mergeFiberUuid(other.getFiberUuid()); - } + internalGetMutableCSlots().mergeFrom(other.internalGetCSlots()); + bitField0_ |= 0x00000040; + internalGetMutableLSlots().mergeFrom(other.internalGetLSlots()); + bitField0_ |= 0x00000080; + internalGetMutableSSlots().mergeFrom(other.internalGetSSlots()); + bitField0_ |= 0x00000100; this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -73368,122 +77515,72 @@ public final class ContextOuterClass { case 0: done = true; break; - case 10: + case 13: { - srcPort_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000002; + length_ = input.readFloat(); + bitField0_ |= 0x00000001; break; } - // case 10 + // case 13 case 18: { - dstPort_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000004; + srcPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; break; } // case 18 case 26: { - localPeerPort_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000008; + dstPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; break; } // case 26 case 34: { - remotePeerPort_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000010; + localPeerPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; break; } // case 34 - case 40: - { - int v = input.readInt32(); - ensureCSlotsIsMutable(); - cSlots_.addInt(v); - break; - } - // case 40 case 42: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - ensureCSlotsIsMutable(); - while (input.getBytesUntilLimit() > 0) { - cSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); + remotePeerPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; break; } // case 42 case 48: { - int v = input.readInt32(); - ensureLSlotsIsMutable(); - lSlots_.addInt(v); + used_ = input.readBool(); + bitField0_ |= 0x00000020; break; } // case 48 - case 50: - { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - ensureLSlotsIsMutable(); - while (input.getBytesUntilLimit() > 0) { - lSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); - break; - } - // case 50 - case 56: - { - int v = input.readInt32(); - ensureSSlotsIsMutable(); - sSlots_.addInt(v); - break; - } - // case 56 case 58: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - ensureSSlotsIsMutable(); - while (input.getBytesUntilLimit() > 0) { - sSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); + com.google.protobuf.MapEntry cSlots__ = input.readMessage(CSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableCSlots().getMutableMap().put(cSlots__.getKey(), cSlots__.getValue()); + bitField0_ |= 0x00000040; break; } // case 58 - case 69: - { - length_ = input.readFloat(); - bitField0_ |= 0x00000100; - break; - } - // case 69 - case 72: - { - used_ = input.readBool(); - bitField0_ |= 0x00000200; - break; - } - // case 72 - case 82: + case 66: { - iD_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00000001; + com.google.protobuf.MapEntry lSlots__ = input.readMessage(LSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableLSlots().getMutableMap().put(lSlots__.getKey(), lSlots__.getValue()); + bitField0_ |= 0x00000080; break; } - // case 82 - case 90: + // case 66 + case 74: { - input.readMessage(getFiberUuidFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000400; + com.google.protobuf.MapEntry sSlots__ = input.readMessage(SSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableSSlots().getMutableMap().put(sSlots__.getKey(), sSlots__.getValue()); + bitField0_ |= 0x00000100; break; } - // case 90 + // case 74 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -73507,77 +77604,36 @@ public final class ContextOuterClass { private int bitField0_; - private java.lang.Object iD_ = ""; - - /** - * string ID = 10; - * @return The iD. - */ - public java.lang.String getID() { - java.lang.Object ref = iD_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - iD_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } + private float length_; /** - * string ID = 10; - * @return The bytes for iD. + * float length = 1; + * @return The length. */ - public com.google.protobuf.ByteString getIDBytes() { - java.lang.Object ref = iD_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - iD_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + @java.lang.Override + public float getLength() { + return length_; } /** - * string ID = 10; - * @param value The iD to set. + * float length = 1; + * @param value The length to set. * @return This builder for chaining. */ - public Builder setID(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - iD_ = value; + public Builder setLength(float value) { + length_ = value; bitField0_ |= 0x00000001; onChanged(); return this; } /** - * string ID = 10; + * float length = 1; * @return This builder for chaining. */ - public Builder clearID() { - iD_ = getDefaultInstance().getID(); + public Builder clearLength() { bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - return this; - } - - /** - * string ID = 10; - * @param value The bytes for iD to set. - * @return This builder for chaining. - */ - public Builder setIDBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - iD_ = value; - bitField0_ |= 0x00000001; + length_ = 0F; onChanged(); return this; } @@ -73585,7 +77641,7 @@ public final class ContextOuterClass { private java.lang.Object srcPort_ = ""; /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ public java.lang.String getSrcPort() { @@ -73601,7 +77657,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ public com.google.protobuf.ByteString getSrcPortBytes() { @@ -73616,7 +77672,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @param value The srcPort to set. * @return This builder for chaining. */ @@ -73631,7 +77687,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @return This builder for chaining. */ public Builder clearSrcPort() { @@ -73642,7 +77698,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @param value The bytes for srcPort to set. * @return This builder for chaining. */ @@ -73660,7 +77716,7 @@ public final class ContextOuterClass { private java.lang.Object dstPort_ = ""; /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ public java.lang.String getDstPort() { @@ -73676,7 +77732,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ public com.google.protobuf.ByteString getDstPortBytes() { @@ -73691,7 +77747,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @param value The dstPort to set. * @return This builder for chaining. */ @@ -73706,7 +77762,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @return This builder for chaining. */ public Builder clearDstPort() { @@ -73717,7 +77773,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @param value The bytes for dstPort to set. * @return This builder for chaining. */ @@ -73735,7 +77791,7 @@ public final class ContextOuterClass { private java.lang.Object localPeerPort_ = ""; /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ public java.lang.String getLocalPeerPort() { @@ -73751,7 +77807,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ public com.google.protobuf.ByteString getLocalPeerPortBytes() { @@ -73766,7 +77822,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @param value The localPeerPort to set. * @return This builder for chaining. */ @@ -73781,7 +77837,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return This builder for chaining. */ public Builder clearLocalPeerPort() { @@ -73792,7 +77848,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @param value The bytes for localPeerPort to set. * @return This builder for chaining. */ @@ -73810,7 +77866,7 @@ public final class ContextOuterClass { private java.lang.Object remotePeerPort_ = ""; /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ public java.lang.String getRemotePeerPort() { @@ -73826,7 +77882,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ public com.google.protobuf.ByteString getRemotePeerPortBytes() { @@ -73841,7 +77897,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @param value The remotePeerPort to set. * @return This builder for chaining. */ @@ -73856,7 +77912,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return This builder for chaining. */ public Builder clearRemotePeerPort() { @@ -73867,7 +77923,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @param value The bytes for remotePeerPort to set. * @return This builder for chaining. */ @@ -73882,436 +77938,419 @@ public final class ContextOuterClass { return this; } - private com.google.protobuf.Internal.IntList cSlots_ = emptyIntList(); - - private void ensureCSlotsIsMutable() { - if (!((bitField0_ & 0x00000020) != 0)) { - cSlots_ = mutableCopy(cSlots_); - bitField0_ |= 0x00000020; - } - } - - /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. - */ - public java.util.List getCSlotsList() { - return ((bitField0_ & 0x00000020) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_; - } - - /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. - */ - public int getCSlotsCount() { - return cSlots_.size(); - } + private boolean used_; /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * bool used = 6; + * @return The used. */ - public int getCSlots(int index) { - return cSlots_.getInt(index); + @java.lang.Override + public boolean getUsed() { + return used_; } /** - * repeated int32 c_slots = 5; - * @param index The index to set the value at. - * @param value The cSlots to set. + * bool used = 6; + * @param value The used to set. * @return This builder for chaining. */ - public Builder setCSlots(int index, int value) { - ensureCSlotsIsMutable(); - cSlots_.setInt(index, value); + public Builder setUsed(boolean value) { + used_ = value; + bitField0_ |= 0x00000020; onChanged(); return this; } /** - * repeated int32 c_slots = 5; - * @param value The cSlots to add. + * bool used = 6; * @return This builder for chaining. */ - public Builder addCSlots(int value) { - ensureCSlotsIsMutable(); - cSlots_.addInt(value); + public Builder clearUsed() { + bitField0_ = (bitField0_ & ~0x00000020); + used_ = false; onChanged(); return this; } - /** - * repeated int32 c_slots = 5; - * @param values The cSlots to add. - * @return This builder for chaining. - */ - public Builder addAllCSlots(java.lang.Iterable values) { - ensureCSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, cSlots_); - onChanged(); - return this; + private com.google.protobuf.MapField cSlots_; + + private com.google.protobuf.MapField internalGetCSlots() { + if (cSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry); + } + return cSlots_; } - /** - * repeated int32 c_slots = 5; - * @return This builder for chaining. - */ - public Builder clearCSlots() { - cSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000020); + private com.google.protobuf.MapField internalGetMutableCSlots() { + if (cSlots_ == null) { + cSlots_ = com.google.protobuf.MapField.newMapField(CSlotsDefaultEntryHolder.defaultEntry); + } + if (!cSlots_.isMutable()) { + cSlots_ = cSlots_.copy(); + } + bitField0_ |= 0x00000040; onChanged(); - return this; + return cSlots_; } - private com.google.protobuf.Internal.IntList lSlots_ = emptyIntList(); + public int getCSlotsCount() { + return internalGetCSlots().getMap().size(); + } - private void ensureLSlotsIsMutable() { - if (!((bitField0_ & 0x00000040) != 0)) { - lSlots_ = mutableCopy(lSlots_); - bitField0_ |= 0x00000040; + /** + * map<string, int32> c_slots = 7; + */ + @java.lang.Override + public boolean containsCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); } + return internalGetCSlots().getMap().containsKey(key); } /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * Use {@link #getCSlotsMap()} instead. */ - public java.util.List getLSlotsList() { - return ((bitField0_ & 0x00000040) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_; + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCSlots() { + return getCSlotsMap(); } /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> c_slots = 7; */ - public int getLSlotsCount() { - return lSlots_.size(); + @java.lang.Override + public java.util.Map getCSlotsMap() { + return internalGetCSlots().getMap(); } /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getLSlots(int index) { - return lSlots_.getInt(index); + @java.lang.Override + public int getCSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * repeated int32 l_slots = 6; - * @param index The index to set the value at. - * @param value The lSlots to set. - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder setLSlots(int index, int value) { - ensureLSlotsIsMutable(); - lSlots_.setInt(index, value); - onChanged(); + @java.lang.Override + public int getCSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearCSlots() { + bitField0_ = (bitField0_ & ~0x00000040); + internalGetMutableCSlots().getMutableMap().clear(); return this; } /** - * repeated int32 l_slots = 6; - * @param value The lSlots to add. - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder addLSlots(int value) { - ensureLSlotsIsMutable(); - lSlots_.addInt(value); - onChanged(); + public Builder removeCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableCSlots().getMutableMap().remove(key); return this; } /** - * repeated int32 l_slots = 6; - * @param values The lSlots to add. - * @return This builder for chaining. + * Use alternate mutation accessors instead. */ - public Builder addAllLSlots(java.lang.Iterable values) { - ensureLSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, lSlots_); - onChanged(); + @java.lang.Deprecated + public java.util.Map getMutableCSlots() { + bitField0_ |= 0x00000040; + return internalGetMutableCSlots().getMutableMap(); + } + + /** + * map<string, int32> c_slots = 7; + */ + public Builder putCSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableCSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000040; return this; } /** - * repeated int32 l_slots = 6; - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder clearLSlots() { - lSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000040); - onChanged(); + public Builder putAllCSlots(java.util.Map values) { + internalGetMutableCSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000040; return this; } - private com.google.protobuf.Internal.IntList sSlots_ = emptyIntList(); + private com.google.protobuf.MapField lSlots_; - private void ensureSSlotsIsMutable() { - if (!((bitField0_ & 0x00000080) != 0)) { - sSlots_ = mutableCopy(sSlots_); - bitField0_ |= 0x00000080; + private com.google.protobuf.MapField internalGetLSlots() { + if (lSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry); } + return lSlots_; } - /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. - */ - public java.util.List getSSlotsList() { - return ((bitField0_ & 0x00000080) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_; - } - - /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. - */ - public int getSSlotsCount() { - return sSlots_.size(); + private com.google.protobuf.MapField internalGetMutableLSlots() { + if (lSlots_ == null) { + lSlots_ = com.google.protobuf.MapField.newMapField(LSlotsDefaultEntryHolder.defaultEntry); + } + if (!lSlots_.isMutable()) { + lSlots_ = lSlots_.copy(); + } + bitField0_ |= 0x00000080; + onChanged(); + return lSlots_; } - /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. - */ - public int getSSlots(int index) { - return sSlots_.getInt(index); + public int getLSlotsCount() { + return internalGetLSlots().getMap().size(); } /** - * repeated int32 s_slots = 7; - * @param index The index to set the value at. - * @param value The sSlots to set. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder setSSlots(int index, int value) { - ensureSSlotsIsMutable(); - sSlots_.setInt(index, value); - onChanged(); - return this; + @java.lang.Override + public boolean containsLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetLSlots().getMap().containsKey(key); } /** - * repeated int32 s_slots = 7; - * @param value The sSlots to add. - * @return This builder for chaining. + * Use {@link #getLSlotsMap()} instead. */ - public Builder addSSlots(int value) { - ensureSSlotsIsMutable(); - sSlots_.addInt(value); - onChanged(); - return this; + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getLSlots() { + return getLSlotsMap(); } /** - * repeated int32 s_slots = 7; - * @param values The sSlots to add. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder addAllSSlots(java.lang.Iterable values) { - ensureSSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sSlots_); - onChanged(); - return this; + @java.lang.Override + public java.util.Map getLSlotsMap() { + return internalGetLSlots().getMap(); } /** - * repeated int32 s_slots = 7; - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder clearSSlots() { - sSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000080); - onChanged(); - return this; + @java.lang.Override + public int getLSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } - private float length_; - /** - * float length = 8; - * @return The length. + * map<string, int32> l_slots = 8; */ @java.lang.Override - public float getLength() { - return length_; + public int getLSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); } - /** - * float length = 8; - * @param value The length to set. - * @return This builder for chaining. - */ - public Builder setLength(float value) { - length_ = value; - bitField0_ |= 0x00000100; - onChanged(); + public Builder clearLSlots() { + bitField0_ = (bitField0_ & ~0x00000080); + internalGetMutableLSlots().getMutableMap().clear(); return this; } /** - * float length = 8; - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder clearLength() { - bitField0_ = (bitField0_ & ~0x00000100); - length_ = 0F; - onChanged(); + public Builder removeLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableLSlots().getMutableMap().remove(key); return this; } - private boolean used_; - /** - * bool used = 9; - * @return The used. + * Use alternate mutation accessors instead. */ - @java.lang.Override - public boolean getUsed() { - return used_; + @java.lang.Deprecated + public java.util.Map getMutableLSlots() { + bitField0_ |= 0x00000080; + return internalGetMutableLSlots().getMutableMap(); } /** - * bool used = 9; - * @param value The used to set. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder setUsed(boolean value) { - used_ = value; - bitField0_ |= 0x00000200; - onChanged(); + public Builder putLSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableLSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000080; return this; } /** - * bool used = 9; - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder clearUsed() { - bitField0_ = (bitField0_ & ~0x00000200); - used_ = false; - onChanged(); + public Builder putAllLSlots(java.util.Map values) { + internalGetMutableLSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000080; return this; } - private context.ContextOuterClass.FiberId fiberUuid_; + private com.google.protobuf.MapField sSlots_; + + private com.google.protobuf.MapField internalGetSSlots() { + if (sSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + return sSlots_; + } + + private com.google.protobuf.MapField internalGetMutableSSlots() { + if (sSlots_ == null) { + sSlots_ = com.google.protobuf.MapField.newMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + if (!sSlots_.isMutable()) { + sSlots_ = sSlots_.copy(); + } + bitField0_ |= 0x00000100; + onChanged(); + return sSlots_; + } - private com.google.protobuf.SingleFieldBuilderV3 fiberUuidBuilder_; + public int getSSlotsCount() { + return internalGetSSlots().getMap().size(); + } /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ - public boolean hasFiberUuid() { - return ((bitField0_ & 0x00000400) != 0); + @java.lang.Override + public boolean containsSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetSSlots().getMap().containsKey(key); } /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * Use {@link #getSSlotsMap()} instead. */ - public context.ContextOuterClass.FiberId getFiberUuid() { - if (fiberUuidBuilder_ == null) { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; - } else { - return fiberUuidBuilder_.getMessage(); - } + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getSSlots() { + return getSSlotsMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder setFiberUuid(context.ContextOuterClass.FiberId value) { - if (fiberUuidBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - fiberUuid_ = value; - } else { - fiberUuidBuilder_.setMessage(value); - } - bitField0_ |= 0x00000400; - onChanged(); - return this; + @java.lang.Override + public java.util.Map getSSlotsMap() { + return internalGetSSlots().getMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder setFiberUuid(context.ContextOuterClass.FiberId.Builder builderForValue) { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = builderForValue.build(); - } else { - fiberUuidBuilder_.setMessage(builderForValue.build()); + @java.lang.Override + public int getSSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); } - bitField0_ |= 0x00000400; - onChanged(); - return this; + java.util.Map map = internalGetSSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder mergeFiberUuid(context.ContextOuterClass.FiberId value) { - if (fiberUuidBuilder_ == null) { - if (((bitField0_ & 0x00000400) != 0) && fiberUuid_ != null && fiberUuid_ != context.ContextOuterClass.FiberId.getDefaultInstance()) { - getFiberUuidBuilder().mergeFrom(value); - } else { - fiberUuid_ = value; - } - } else { - fiberUuidBuilder_.mergeFrom(value); + @java.lang.Override + public int getSSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); } - bitField0_ |= 0x00000400; - onChanged(); + java.util.Map map = internalGetSSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearSSlots() { + bitField0_ = (bitField0_ & ~0x00000100); + internalGetMutableSSlots().getMutableMap().clear(); return this; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder clearFiberUuid() { - bitField0_ = (bitField0_ & ~0x00000400); - fiberUuid_ = null; - if (fiberUuidBuilder_ != null) { - fiberUuidBuilder_.dispose(); - fiberUuidBuilder_ = null; + public Builder removeSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); } - onChanged(); + internalGetMutableSSlots().getMutableMap().remove(key); return this; } /** - * .context.FiberId fiber_uuid = 11; + * Use alternate mutation accessors instead. */ - public context.ContextOuterClass.FiberId.Builder getFiberUuidBuilder() { - bitField0_ |= 0x00000400; - onChanged(); - return getFiberUuidFieldBuilder().getBuilder(); + @java.lang.Deprecated + public java.util.Map getMutableSSlots() { + bitField0_ |= 0x00000100; + return internalGetMutableSSlots().getMutableMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() { - if (fiberUuidBuilder_ != null) { - return fiberUuidBuilder_.getMessageOrBuilder(); - } else { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; + public Builder putSSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); } + internalGetMutableSSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000100; + return this; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - private com.google.protobuf.SingleFieldBuilderV3 getFiberUuidFieldBuilder() { - if (fiberUuidBuilder_ == null) { - fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getFiberUuid(), getParentForChildren(), isClean()); - fiberUuid_ = null; - } - return fiberUuidBuilder_; + public Builder putAllSSlots(java.util.Map values) { + internalGetMutableSSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000100; + return this; } @java.lang.Override @@ -74323,24 +78362,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.Fiber) + // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails) } - // @@protoc_insertion_point(class_scope:context.Fiber) - private static final context.ContextOuterClass.Fiber DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails) + private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.Fiber(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails(); } - public static context.ContextOuterClass.Fiber getDefaultInstance() { + public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public Fiber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -74355,246 +78394,270 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.Fiber getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails) + public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink) com.google.protobuf.MessageOrBuilder { /** - * float length = 1; - * @return The length. + * string name = 1; + * @return The name. */ - float getLength(); + java.lang.String getName(); /** - * string source = 2; - * @return The source. + * string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. + */ + boolean hasOpticalDetails(); + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. + */ + context.ContextOuterClass.OpticalLinkDetails getOpticalDetails(); + + /** + * .context.OpticalLinkDetails optical_details = 2; */ - java.lang.String getSource(); + context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder(); /** - * string source = 2; - * @return The bytes for source. + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. */ - com.google.protobuf.ByteString getSourceBytes(); + boolean hasLinkId(); /** - * string target = 3; - * @return The target. + * .context.LinkId link_id = 3; + * @return The linkId. */ - java.lang.String getTarget(); + context.ContextOuterClass.LinkId getLinkId(); /** - * string target = 3; - * @return The bytes for target. + * .context.LinkId link_id = 3; */ - com.google.protobuf.ByteString getTargetBytes(); + context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - java.util.List getFibersList(); + java.util.List getLinkEndpointIdsList(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - context.ContextOuterClass.Fiber getFibers(int index); + context.ContextOuterClass.EndPointId getLinkEndpointIds(int index); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - int getFibersCount(); + int getLinkEndpointIdsCount(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - java.util.List getFibersOrBuilderList(); + java.util.List getLinkEndpointIdsOrBuilderList(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index); + context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index); } /** - * Protobuf type {@code context.OpticalLinkDetails} + * Protobuf type {@code context.OpticalLink} */ - public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails) - OpticalLinkDetailsOrBuilder { + public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink) + OpticalLinkOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLinkDetails.newBuilder() to construct. - private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLink.newBuilder() to construct. + private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLinkDetails() { - source_ = ""; - target_ = ""; - fibers_ = java.util.Collections.emptyList(); + private OpticalLink() { + name_ = ""; + linkEndpointIds_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLinkDetails(); + return new OpticalLink(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); - } - - public static final int LENGTH_FIELD_NUMBER = 1; - - private float length_ = 0F; - - /** - * float length = 1; - * @return The length. - */ - @java.lang.Override - public float getLength() { - return length_; + return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); } - public static final int SOURCE_FIELD_NUMBER = 2; + public static final int NAME_FIELD_NUMBER = 1; @SuppressWarnings("serial") - private volatile java.lang.Object source_ = ""; + private volatile java.lang.Object name_ = ""; /** - * string source = 2; - * @return The source. + * string name = 1; + * @return The name. */ @java.lang.Override - public java.lang.String getSource() { - java.lang.Object ref = source_; + public java.lang.String getName() { + java.lang.Object ref = name_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - source_ = s; + name_ = s; return s; } } /** - * string source = 2; - * @return The bytes for source. + * string name = 1; + * @return The bytes for name. */ @java.lang.Override - public com.google.protobuf.ByteString getSourceBytes() { - java.lang.Object ref = source_; + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - source_ = b; + name_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - public static final int TARGET_FIELD_NUMBER = 3; + public static final int OPTICAL_DETAILS_FIELD_NUMBER = 2; - @SuppressWarnings("serial") - private volatile java.lang.Object target_ = ""; + private context.ContextOuterClass.OpticalLinkDetails opticalDetails_; /** - * string target = 3; - * @return The target. + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. */ @java.lang.Override - public java.lang.String getTarget() { - java.lang.Object ref = target_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - target_ = s; - return s; - } + public boolean hasOpticalDetails() { + return opticalDetails_ != null; } /** - * string target = 3; - * @return The bytes for target. + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. */ @java.lang.Override - public com.google.protobuf.ByteString getTargetBytes() { - java.lang.Object ref = target_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - target_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; + } + + public static final int LINK_ID_FIELD_NUMBER = 3; + + private context.ContextOuterClass.LinkId linkId_; + + /** + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. + */ + @java.lang.Override + public boolean hasLinkId() { + return linkId_ != null; + } + + /** + * .context.LinkId link_id = 3; + * @return The linkId. + */ + @java.lang.Override + public context.ContextOuterClass.LinkId getLinkId() { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; + } + + /** + * .context.LinkId link_id = 3; + */ + @java.lang.Override + public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; } - public static final int FIBERS_FIELD_NUMBER = 4; + public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 4; @SuppressWarnings("serial") - private java.util.List fibers_; + private java.util.List linkEndpointIds_; /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public java.util.List getFibersList() { - return fibers_; + public java.util.List getLinkEndpointIdsList() { + return linkEndpointIds_; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public java.util.List getFibersOrBuilderList() { - return fibers_; + public java.util.List getLinkEndpointIdsOrBuilderList() { + return linkEndpointIds_; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public int getFibersCount() { - return fibers_.size(); + public int getLinkEndpointIdsCount() { + return linkEndpointIds_.size(); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public context.ContextOuterClass.Fiber getFibers(int index) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) { + return linkEndpointIds_.get(index); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) { + return linkEndpointIds_.get(index); } private byte memoizedIsInitialized = -1; @@ -74612,17 +78675,17 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (java.lang.Float.floatToRawIntBits(length_) != 0) { - output.writeFloat(1, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, source_); + if (opticalDetails_ != null) { + output.writeMessage(2, getOpticalDetails()); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_); + if (linkId_ != null) { + output.writeMessage(3, getLinkId()); } - for (int i = 0; i < fibers_.size(); i++) { - output.writeMessage(4, fibers_.get(i)); + for (int i = 0; i < linkEndpointIds_.size(); i++) { + output.writeMessage(4, linkEndpointIds_.get(i)); } getUnknownFields().writeTo(output); } @@ -74633,17 +78696,17 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (java.lang.Float.floatToRawIntBits(length_) != 0) { - size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, source_); + if (opticalDetails_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalDetails()); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_); + if (linkId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getLinkId()); } - for (int i = 0; i < fibers_.size(); i++) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, fibers_.get(i)); + for (int i = 0; i < linkEndpointIds_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkEndpointIds_.get(i)); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -74655,17 +78718,25 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLink)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj; - if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) + context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj; + if (!getName().equals(other.getName())) return false; - if (!getSource().equals(other.getSource())) + if (hasOpticalDetails() != other.hasOpticalDetails()) return false; - if (!getTarget().equals(other.getTarget())) + if (hasOpticalDetails()) { + if (!getOpticalDetails().equals(other.getOpticalDetails())) + return false; + } + if (hasLinkId() != other.hasLinkId()) return false; - if (!getFibersList().equals(other.getFibersList())) + if (hasLinkId()) { + if (!getLinkId().equals(other.getLinkId())) + return false; + } + if (!getLinkEndpointIdsList().equals(other.getLinkEndpointIdsList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; @@ -74679,66 +78750,70 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + LENGTH_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); - hash = (37 * hash) + SOURCE_FIELD_NUMBER; - hash = (53 * hash) + getSource().hashCode(); - hash = (37 * hash) + TARGET_FIELD_NUMBER; - hash = (53 * hash) + getTarget().hashCode(); - if (getFibersCount() > 0) { - hash = (37 * hash) + FIBERS_FIELD_NUMBER; - hash = (53 * hash) + getFibersList().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasOpticalDetails()) { + hash = (37 * hash) + OPTICAL_DETAILS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalDetails().hashCode(); + } + if (hasLinkId()) { + hash = (37 * hash) + LINK_ID_FIELD_NUMBER; + hash = (53 * hash) + getLinkId().hashCode(); + } + if (getLinkEndpointIdsCount() > 0) { + hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER; + hash = (53 * hash) + getLinkEndpointIdsList().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -74751,7 +78826,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -74767,21 +78842,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLinkDetails} + * Protobuf type {@code context.OpticalLink} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails) - context.ContextOuterClass.OpticalLinkDetailsOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLink) + context.ContextOuterClass.OpticalLinkOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder() + // Construct using context.ContextOuterClass.OpticalLink.newBuilder() private Builder() { } @@ -74793,14 +78868,22 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - length_ = 0F; - source_ = ""; - target_ = ""; - if (fibersBuilder_ == null) { - fibers_ = java.util.Collections.emptyList(); + name_ = ""; + opticalDetails_ = null; + if (opticalDetailsBuilder_ != null) { + opticalDetailsBuilder_.dispose(); + opticalDetailsBuilder_ = null; + } + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); + linkIdBuilder_ = null; + } + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIds_ = java.util.Collections.emptyList(); } else { - fibers_ = null; - fibersBuilder_.clear(); + linkEndpointIds_ = null; + linkEndpointIdsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); return this; @@ -74808,17 +78891,17 @@ public final class ContextOuterClass { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance(); + public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLink.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails build() { - context.ContextOuterClass.OpticalLinkDetails result = buildPartial(); + public context.ContextOuterClass.OpticalLink build() { + context.ContextOuterClass.OpticalLink result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -74826,8 +78909,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails buildPartial() { - context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this); + public context.ContextOuterClass.OpticalLink buildPartial() { + context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this); buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); @@ -74836,78 +78919,76 @@ public final class ContextOuterClass { return result; } - private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLinkDetails result) { - if (fibersBuilder_ == null) { + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLink result) { + if (linkEndpointIdsBuilder_ == null) { if (((bitField0_ & 0x00000008) != 0)) { - fibers_ = java.util.Collections.unmodifiableList(fibers_); + linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_); bitField0_ = (bitField0_ & ~0x00000008); } - result.fibers_ = fibers_; + result.linkEndpointIds_ = linkEndpointIds_; } else { - result.fibers_ = fibersBuilder_.build(); + result.linkEndpointIds_ = linkEndpointIdsBuilder_.build(); } } - private void buildPartial0(context.ContextOuterClass.OpticalLinkDetails result) { + private void buildPartial0(context.ContextOuterClass.OpticalLink result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { - result.length_ = length_; + result.name_ = name_; } if (((from_bitField0_ & 0x00000002) != 0)) { - result.source_ = source_; + result.opticalDetails_ = opticalDetailsBuilder_ == null ? opticalDetails_ : opticalDetailsBuilder_.build(); } if (((from_bitField0_ & 0x00000004) != 0)) { - result.target_ = target_; + result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build(); } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLinkDetails) { - return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other); + if (other instanceof context.ContextOuterClass.OpticalLink) { + return mergeFrom((context.ContextOuterClass.OpticalLink) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) { - if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) { + if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance()) return this; - if (other.getLength() != 0F) { - setLength(other.getLength()); - } - if (!other.getSource().isEmpty()) { - source_ = other.source_; - bitField0_ |= 0x00000002; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; onChanged(); } - if (!other.getTarget().isEmpty()) { - target_ = other.target_; - bitField0_ |= 0x00000004; - onChanged(); + if (other.hasOpticalDetails()) { + mergeOpticalDetails(other.getOpticalDetails()); + } + if (other.hasLinkId()) { + mergeLinkId(other.getLinkId()); } - if (fibersBuilder_ == null) { - if (!other.fibers_.isEmpty()) { - if (fibers_.isEmpty()) { - fibers_ = other.fibers_; + if (linkEndpointIdsBuilder_ == null) { + if (!other.linkEndpointIds_.isEmpty()) { + if (linkEndpointIds_.isEmpty()) { + linkEndpointIds_ = other.linkEndpointIds_; bitField0_ = (bitField0_ & ~0x00000008); } else { - ensureFibersIsMutable(); - fibers_.addAll(other.fibers_); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.addAll(other.linkEndpointIds_); } onChanged(); } } else { - if (!other.fibers_.isEmpty()) { - if (fibersBuilder_.isEmpty()) { - fibersBuilder_.dispose(); - fibersBuilder_ = null; - fibers_ = other.fibers_; + if (!other.linkEndpointIds_.isEmpty()) { + if (linkEndpointIdsBuilder_.isEmpty()) { + linkEndpointIdsBuilder_.dispose(); + linkEndpointIdsBuilder_ = null; + linkEndpointIds_ = other.linkEndpointIds_; bitField0_ = (bitField0_ & ~0x00000008); - fibersBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFibersFieldBuilder() : null; + linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null; } else { - fibersBuilder_.addAllMessages(other.fibers_); + linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_); } } } @@ -74934,35 +79015,35 @@ public final class ContextOuterClass { case 0: done = true; break; - case 13: + case 10: { - length_ = input.readFloat(); + name_ = input.readStringRequireUtf8(); bitField0_ |= 0x00000001; break; } - // case 13 + // case 10 case 18: { - source_ = input.readStringRequireUtf8(); + input.readMessage(getOpticalDetailsFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000002; break; } // case 18 case 26: { - target_ = input.readStringRequireUtf8(); + input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000004; break; } // case 26 case 34: { - context.ContextOuterClass.Fiber m = input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry); - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.add(m); + context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry); + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(m); } else { - fibersBuilder_.addMessage(m); + linkEndpointIdsBuilder_.addMessage(m); } break; } @@ -74990,425 +79071,552 @@ public final class ContextOuterClass { private int bitField0_; - private float length_; + private java.lang.Object name_ = ""; /** - * float length = 1; - * @return The length. + * string name = 1; + * @return The name. */ - @java.lang.Override - public float getLength() { - return length_; + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } } /** - * float length = 1; - * @param value The length to set. + * string name = 1; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string name = 1; + * @param value The name to set. * @return This builder for chaining. */ - public Builder setLength(float value) { - length_ = value; + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + name_ = value; bitField0_ |= 0x00000001; onChanged(); return this; } /** - * float length = 1; + * string name = 1; * @return This builder for chaining. */ - public Builder clearLength() { + public Builder clearName() { + name_ = getDefaultInstance().getName(); bitField0_ = (bitField0_ & ~0x00000001); - length_ = 0F; onChanged(); return this; } - private java.lang.Object source_ = ""; + /** + * string name = 1; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private context.ContextOuterClass.OpticalLinkDetails opticalDetails_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalDetailsBuilder_; /** - * string source = 2; - * @return The source. + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. */ - public java.lang.String getSource() { - java.lang.Object ref = source_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - source_ = s; - return s; + public boolean hasOpticalDetails() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. + */ + public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() { + if (opticalDetailsBuilder_ == null) { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; } else { - return (java.lang.String) ref; + return opticalDetailsBuilder_.getMessage(); } } /** - * string source = 2; - * @return The bytes for source. + * .context.OpticalLinkDetails optical_details = 2; */ - public com.google.protobuf.ByteString getSourceBytes() { - java.lang.Object ref = source_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - source_ = b; - return b; + public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) { + if (opticalDetailsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + opticalDetails_ = value; } else { - return (com.google.protobuf.ByteString) ref; + opticalDetailsBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * string source = 2; - * @param value The source to set. - * @return This builder for chaining. + * .context.OpticalLinkDetails optical_details = 2; */ - public Builder setSource(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); + public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) { + if (opticalDetailsBuilder_ == null) { + opticalDetails_ = builderForValue.build(); + } else { + opticalDetailsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + public Builder mergeOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) { + if (opticalDetailsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && opticalDetails_ != null && opticalDetails_ != context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) { + getOpticalDetailsBuilder().mergeFrom(value); + } else { + opticalDetails_ = value; + } + } else { + opticalDetailsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + public Builder clearOpticalDetails() { + bitField0_ = (bitField0_ & ~0x00000002); + opticalDetails_ = null; + if (opticalDetailsBuilder_ != null) { + opticalDetailsBuilder_.dispose(); + opticalDetailsBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + public context.ContextOuterClass.OpticalLinkDetails.Builder getOpticalDetailsBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getOpticalDetailsFieldBuilder().getBuilder(); + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() { + if (opticalDetailsBuilder_ != null) { + return opticalDetailsBuilder_.getMessageOrBuilder(); + } else { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; + } + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3 getOpticalDetailsFieldBuilder() { + if (opticalDetailsBuilder_ == null) { + opticalDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalDetails(), getParentForChildren(), isClean()); + opticalDetails_ = null; + } + return opticalDetailsBuilder_; + } + + private context.ContextOuterClass.LinkId linkId_; + + private com.google.protobuf.SingleFieldBuilderV3 linkIdBuilder_; + + /** + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. + */ + public boolean hasLinkId() { + return ((bitField0_ & 0x00000004) != 0); + } + + /** + * .context.LinkId link_id = 3; + * @return The linkId. + */ + public context.ContextOuterClass.LinkId getLinkId() { + if (linkIdBuilder_ == null) { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; + } else { + return linkIdBuilder_.getMessage(); } - source_ = value; - bitField0_ |= 0x00000002; - onChanged(); - return this; } /** - * string source = 2; - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder clearSource() { - source_ = getDefaultInstance().getSource(); - bitField0_ = (bitField0_ & ~0x00000002); + public Builder setLinkId(context.ContextOuterClass.LinkId value) { + if (linkIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + linkId_ = value; + } else { + linkIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string source = 2; - * @param value The bytes for source to set. - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder setSourceBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) { + if (linkIdBuilder_ == null) { + linkId_ = builderForValue.build(); + } else { + linkIdBuilder_.setMessage(builderForValue.build()); } - checkByteStringIsUtf8(value); - source_ = value; - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; onChanged(); return this; } - private java.lang.Object target_ = ""; - /** - * string target = 3; - * @return The target. + * .context.LinkId link_id = 3; */ - public java.lang.String getTarget() { - java.lang.Object ref = target_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - target_ = s; - return s; + public Builder mergeLinkId(context.ContextOuterClass.LinkId value) { + if (linkIdBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) { + getLinkIdBuilder().mergeFrom(value); + } else { + linkId_ = value; + } } else { - return (java.lang.String) ref; + linkIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000004; + onChanged(); + return this; } /** - * string target = 3; - * @return The bytes for target. + * .context.LinkId link_id = 3; */ - public com.google.protobuf.ByteString getTargetBytes() { - java.lang.Object ref = target_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - target_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; + public Builder clearLinkId() { + bitField0_ = (bitField0_ & ~0x00000004); + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); + linkIdBuilder_ = null; } + onChanged(); + return this; } /** - * string target = 3; - * @param value The target to set. - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder setTarget(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - target_ = value; + public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() { bitField0_ |= 0x00000004; onChanged(); - return this; + return getLinkIdFieldBuilder().getBuilder(); } /** - * string target = 3; - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder clearTarget() { - target_ = getDefaultInstance().getTarget(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - return this; + public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { + if (linkIdBuilder_ != null) { + return linkIdBuilder_.getMessageOrBuilder(); + } else { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; + } } /** - * string target = 3; - * @param value The bytes for target to set. - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder setTargetBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + private com.google.protobuf.SingleFieldBuilderV3 getLinkIdFieldBuilder() { + if (linkIdBuilder_ == null) { + linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getLinkId(), getParentForChildren(), isClean()); + linkId_ = null; } - checkByteStringIsUtf8(value); - target_ = value; - bitField0_ |= 0x00000004; - onChanged(); - return this; + return linkIdBuilder_; } - private java.util.List fibers_ = java.util.Collections.emptyList(); + private java.util.List linkEndpointIds_ = java.util.Collections.emptyList(); - private void ensureFibersIsMutable() { + private void ensureLinkEndpointIdsIsMutable() { if (!((bitField0_ & 0x00000008) != 0)) { - fibers_ = new java.util.ArrayList(fibers_); + linkEndpointIds_ = new java.util.ArrayList(linkEndpointIds_); bitField0_ |= 0x00000008; } } - private com.google.protobuf.RepeatedFieldBuilderV3 fibersBuilder_; + private com.google.protobuf.RepeatedFieldBuilderV3 linkEndpointIdsBuilder_; /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersList() { - if (fibersBuilder_ == null) { - return java.util.Collections.unmodifiableList(fibers_); + public java.util.List getLinkEndpointIdsList() { + if (linkEndpointIdsBuilder_ == null) { + return java.util.Collections.unmodifiableList(linkEndpointIds_); } else { - return fibersBuilder_.getMessageList(); + return linkEndpointIdsBuilder_.getMessageList(); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public int getFibersCount() { - if (fibersBuilder_ == null) { - return fibers_.size(); + public int getLinkEndpointIdsCount() { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.size(); } else { - return fibersBuilder_.getCount(); + return linkEndpointIdsBuilder_.getCount(); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber getFibers(int index) { - if (fibersBuilder_ == null) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.get(index); } else { - return fibersBuilder_.getMessage(index); + return linkEndpointIdsBuilder_.getMessage(index); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder setFibers(int index, context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.set(index, value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.set(index, value); onChanged(); } else { - fibersBuilder_.setMessage(index, value); + linkEndpointIdsBuilder_.setMessage(index, value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder setFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.set(index, builderForValue.build()); + public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.set(index, builderForValue.build()); onChanged(); } else { - fibersBuilder_.setMessage(index, builderForValue.build()); + linkEndpointIdsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.add(value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(value); onChanged(); } else { - fibersBuilder_.addMessage(value); + linkEndpointIdsBuilder_.addMessage(value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(int index, context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.add(index, value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(index, value); onChanged(); } else { - fibersBuilder_.addMessage(index, value); + linkEndpointIdsBuilder_.addMessage(index, value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.add(builderForValue.build()); + public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(builderForValue.build()); onChanged(); } else { - fibersBuilder_.addMessage(builderForValue.build()); + linkEndpointIdsBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.add(index, builderForValue.build()); + public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(index, builderForValue.build()); onChanged(); } else { - fibersBuilder_.addMessage(index, builderForValue.build()); + linkEndpointIdsBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addAllFibers(java.lang.Iterable values) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fibers_); + public Builder addAllLinkEndpointIds(java.lang.Iterable values) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkEndpointIds_); onChanged(); } else { - fibersBuilder_.addAllMessages(values); + linkEndpointIdsBuilder_.addAllMessages(values); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder clearFibers() { - if (fibersBuilder_ == null) { - fibers_ = java.util.Collections.emptyList(); + public Builder clearLinkEndpointIds() { + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { - fibersBuilder_.clear(); + linkEndpointIdsBuilder_.clear(); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder removeFibers(int index) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.remove(index); + public Builder removeLinkEndpointIds(int index) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.remove(index); onChanged(); } else { - fibersBuilder_.remove(index); + linkEndpointIdsBuilder_.remove(index); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder getFibersBuilder(int index) { - return getFibersFieldBuilder().getBuilder(index); + public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(int index) { + return getLinkEndpointIdsFieldBuilder().getBuilder(index); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) { - if (fibersBuilder_ == null) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.get(index); } else { - return fibersBuilder_.getMessageOrBuilder(index); + return linkEndpointIdsBuilder_.getMessageOrBuilder(index); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersOrBuilderList() { - if (fibersBuilder_ != null) { - return fibersBuilder_.getMessageOrBuilderList(); + public java.util.List getLinkEndpointIdsOrBuilderList() { + if (linkEndpointIdsBuilder_ != null) { + return linkEndpointIdsBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(fibers_); + return java.util.Collections.unmodifiableList(linkEndpointIds_); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder addFibersBuilder() { - return getFibersFieldBuilder().addBuilder(context.ContextOuterClass.Fiber.getDefaultInstance()); + public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() { + return getLinkEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance()); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder addFibersBuilder(int index) { - return getFibersFieldBuilder().addBuilder(index, context.ContextOuterClass.Fiber.getDefaultInstance()); + public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(int index) { + return getLinkEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance()); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersBuilderList() { - return getFibersFieldBuilder().getBuilderList(); + public java.util.List getLinkEndpointIdsBuilderList() { + return getLinkEndpointIdsFieldBuilder().getBuilderList(); } - private com.google.protobuf.RepeatedFieldBuilderV3 getFibersFieldBuilder() { - if (fibersBuilder_ == null) { - fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(fibers_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); - fibers_ = null; + private com.google.protobuf.RepeatedFieldBuilderV3 getLinkEndpointIdsFieldBuilder() { + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); + linkEndpointIds_ = null; } - return fibersBuilder_; + return linkEndpointIdsBuilder_; } @java.lang.Override @@ -75420,24 +79628,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails) + // @@protoc_insertion_point(builder_scope:context.OpticalLink) } - // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails) - private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLink) + private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink(); } - public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() { + public static context.ContextOuterClass.OpticalLink getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -75452,199 +79660,148 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink) + public interface ServiceConfigRuleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceConfigRule) com.google.protobuf.MessageOrBuilder { /** - * string name = 1; - * @return The name. - */ - java.lang.String getName(); - - /** - * string name = 1; - * @return The bytes for name. - */ - com.google.protobuf.ByteString getNameBytes(); - - /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ - boolean hasDetails(); + boolean hasServiceId(); /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ - context.ContextOuterClass.OpticalLinkDetails getDetails(); + context.ContextOuterClass.ServiceId getServiceId(); /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder(); + context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder(); /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ - boolean hasOpticalLinkUuid(); + boolean hasConfigruleCustom(); /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ - context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid(); + context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom(); /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder(); + context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder(); } /** - * Protobuf type {@code context.OpticalLink} + * Protobuf type {@code context.ServiceConfigRule} */ - public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink) - OpticalLinkOrBuilder { + public static final class ServiceConfigRule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceConfigRule) + ServiceConfigRuleOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLink.newBuilder() to construct. - private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use ServiceConfigRule.newBuilder() to construct. + private ServiceConfigRule(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLink() { - name_ = ""; + private ServiceConfigRule() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLink(); + return new ServiceConfigRule(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); - } - - public static final int NAME_FIELD_NUMBER = 1; - - @SuppressWarnings("serial") - private volatile java.lang.Object name_ = ""; - - /** - * string name = 1; - * @return The name. - */ - @java.lang.Override - public java.lang.String getName() { - java.lang.Object ref = name_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - name_ = s; - return s; - } - } - - /** - * string name = 1; - * @return The bytes for name. - */ - @java.lang.Override - public com.google.protobuf.ByteString getNameBytes() { - java.lang.Object ref = name_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - name_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class); } - public static final int DETAILS_FIELD_NUMBER = 2; + public static final int SERVICE_ID_FIELD_NUMBER = 1; - private context.ContextOuterClass.OpticalLinkDetails details_; + private context.ContextOuterClass.ServiceId serviceId_; /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ @java.lang.Override - public boolean hasDetails() { - return details_ != null; + public boolean hasServiceId() { + return serviceId_ != null; } /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDetails() { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + public context.ContextOuterClass.ServiceId getServiceId() { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } - public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 3; + public static final int CONFIGRULE_CUSTOM_FIELD_NUMBER = 2; - private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_; + private context.ContextOuterClass.ConfigRule_Custom configruleCustom_; /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ @java.lang.Override - public boolean hasOpticalLinkUuid() { - return opticalLinkUuid_ != null; + public boolean hasConfigruleCustom() { + return configruleCustom_ != null; } /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } private byte memoizedIsInitialized = -1; @@ -75662,14 +79819,11 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); - } - if (details_ != null) { - output.writeMessage(2, getDetails()); + if (serviceId_ != null) { + output.writeMessage(1, getServiceId()); } - if (opticalLinkUuid_ != null) { - output.writeMessage(3, getOpticalLinkUuid()); + if (configruleCustom_ != null) { + output.writeMessage(2, getConfigruleCustom()); } getUnknownFields().writeTo(output); } @@ -75680,14 +79834,11 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); - } - if (details_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDetails()); + if (serviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId()); } - if (opticalLinkUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getOpticalLinkUuid()); + if (configruleCustom_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConfigruleCustom()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -75699,22 +79850,20 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLink)) { + if (!(obj instanceof context.ContextOuterClass.ServiceConfigRule)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj; - if (!getName().equals(other.getName())) - return false; - if (hasDetails() != other.hasDetails()) + context.ContextOuterClass.ServiceConfigRule other = (context.ContextOuterClass.ServiceConfigRule) obj; + if (hasServiceId() != other.hasServiceId()) return false; - if (hasDetails()) { - if (!getDetails().equals(other.getDetails())) + if (hasServiceId()) { + if (!getServiceId().equals(other.getServiceId())) return false; } - if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid()) + if (hasConfigruleCustom() != other.hasConfigruleCustom()) return false; - if (hasOpticalLinkUuid()) { - if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid())) + if (hasConfigruleCustom()) { + if (!getConfigruleCustom().equals(other.getConfigruleCustom())) return false; } if (!getUnknownFields().equals(other.getUnknownFields())) @@ -75729,66 +79878,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + NAME_FIELD_NUMBER; - hash = (53 * hash) + getName().hashCode(); - if (hasDetails()) { - hash = (37 * hash) + DETAILS_FIELD_NUMBER; - hash = (53 * hash) + getDetails().hashCode(); + if (hasServiceId()) { + hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getServiceId().hashCode(); } - if (hasOpticalLinkUuid()) { - hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalLinkUuid().hashCode(); + if (hasConfigruleCustom()) { + hash = (37 * hash) + CONFIGRULE_CUSTOM_FIELD_NUMBER; + hash = (53 * hash) + getConfigruleCustom().hashCode(); } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -75801,7 +79948,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) { + public static Builder newBuilder(context.ContextOuterClass.ServiceConfigRule prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -75817,21 +79964,21 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLink} + * Protobuf type {@code context.ServiceConfigRule} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLink) - context.ContextOuterClass.OpticalLinkOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.ServiceConfigRule) + context.ContextOuterClass.ServiceConfigRuleOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLink.newBuilder() + // Construct using context.ContextOuterClass.ServiceConfigRule.newBuilder() private Builder() { } @@ -75843,33 +79990,32 @@ public final class ContextOuterClass { public Builder clear() { super.clear(); bitField0_ = 0; - name_ = ""; - details_ = null; - if (detailsBuilder_ != null) { - detailsBuilder_.dispose(); - detailsBuilder_ = null; + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); + serviceIdBuilder_ = null; } - opticalLinkUuid_ = null; - if (opticalLinkUuidBuilder_ != null) { - opticalLinkUuidBuilder_.dispose(); - opticalLinkUuidBuilder_ = null; + configruleCustom_ = null; + if (configruleCustomBuilder_ != null) { + configruleCustomBuilder_.dispose(); + configruleCustomBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLink.getDefaultInstance(); + public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() { + return context.ContextOuterClass.ServiceConfigRule.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLink build() { - context.ContextOuterClass.OpticalLink result = buildPartial(); + public context.ContextOuterClass.ServiceConfigRule build() { + context.ContextOuterClass.ServiceConfigRule result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -75877,8 +80023,8 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLink buildPartial() { - context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this); + public context.ContextOuterClass.ServiceConfigRule buildPartial() { + context.ContextOuterClass.ServiceConfigRule result = new context.ContextOuterClass.ServiceConfigRule(this); if (bitField0_ != 0) { buildPartial0(result); } @@ -75886,42 +80032,34 @@ public final class ContextOuterClass { return result; } - private void buildPartial0(context.ContextOuterClass.OpticalLink result) { + private void buildPartial0(context.ContextOuterClass.ServiceConfigRule result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { - result.name_ = name_; + result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build(); } if (((from_bitField0_ & 0x00000002) != 0)) { - result.details_ = detailsBuilder_ == null ? details_ : detailsBuilder_.build(); - } - if (((from_bitField0_ & 0x00000004) != 0)) { - result.opticalLinkUuid_ = opticalLinkUuidBuilder_ == null ? opticalLinkUuid_ : opticalLinkUuidBuilder_.build(); + result.configruleCustom_ = configruleCustomBuilder_ == null ? configruleCustom_ : configruleCustomBuilder_.build(); } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLink) { - return mergeFrom((context.ContextOuterClass.OpticalLink) other); + if (other instanceof context.ContextOuterClass.ServiceConfigRule) { + return mergeFrom((context.ContextOuterClass.ServiceConfigRule) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) { - if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.ServiceConfigRule other) { + if (other == context.ContextOuterClass.ServiceConfigRule.getDefaultInstance()) return this; - if (!other.getName().isEmpty()) { - name_ = other.name_; - bitField0_ |= 0x00000001; - onChanged(); - } - if (other.hasDetails()) { - mergeDetails(other.getDetails()); + if (other.hasServiceId()) { + mergeServiceId(other.getServiceId()); } - if (other.hasOpticalLinkUuid()) { - mergeOpticalLinkUuid(other.getOpticalLinkUuid()); + if (other.hasConfigruleCustom()) { + mergeConfigruleCustom(other.getConfigruleCustom()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -75948,25 +80086,18 @@ public final class ContextOuterClass { break; case 10: { - name_ = input.readStringRequireUtf8(); + input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000001; break; } // case 10 case 18: { - input.readMessage(getDetailsFieldBuilder().getBuilder(), extensionRegistry); + input.readMessage(getConfigruleCustomFieldBuilder().getBuilder(), extensionRegistry); bitField0_ |= 0x00000002; break; } // case 18 - case 26: - { - input.readMessage(getOpticalLinkUuidFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000004; - break; - } - // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -75990,315 +80121,240 @@ public final class ContextOuterClass { private int bitField0_; - private java.lang.Object name_ = ""; - - /** - * string name = 1; - * @return The name. - */ - public java.lang.String getName() { - java.lang.Object ref = name_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - name_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - - /** - * string name = 1; - * @return The bytes for name. - */ - public com.google.protobuf.ByteString getNameBytes() { - java.lang.Object ref = name_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - name_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - /** - * string name = 1; - * @param value The name to set. - * @return This builder for chaining. - */ - public Builder setName(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - name_ = value; - bitField0_ |= 0x00000001; - onChanged(); - return this; - } - - /** - * string name = 1; - * @return This builder for chaining. - */ - public Builder clearName() { - name_ = getDefaultInstance().getName(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - return this; - } - - /** - * string name = 1; - * @param value The bytes for name to set. - * @return This builder for chaining. - */ - public Builder setNameBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - name_ = value; - bitField0_ |= 0x00000001; - onChanged(); - return this; - } - - private context.ContextOuterClass.OpticalLinkDetails details_; + private context.ContextOuterClass.ServiceId serviceId_; - private com.google.protobuf.SingleFieldBuilderV3 detailsBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 serviceIdBuilder_; /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ - public boolean hasDetails() { - return ((bitField0_ & 0x00000002) != 0); + public boolean hasServiceId() { + return ((bitField0_ & 0x00000001) != 0); } /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ - public context.ContextOuterClass.OpticalLinkDetails getDetails() { - if (detailsBuilder_ == null) { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + public context.ContextOuterClass.ServiceId getServiceId() { + if (serviceIdBuilder_ == null) { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } else { - return detailsBuilder_.getMessage(); + return serviceIdBuilder_.getMessage(); } } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails value) { - if (detailsBuilder_ == null) { + public Builder setServiceId(context.ContextOuterClass.ServiceId value) { + if (serviceIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - details_ = value; + serviceId_ = value; } else { - detailsBuilder_.setMessage(value); + serviceIdBuilder_.setMessage(value); } - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000001; onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) { - if (detailsBuilder_ == null) { - details_ = builderForValue.build(); + public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) { + if (serviceIdBuilder_ == null) { + serviceId_ = builderForValue.build(); } else { - detailsBuilder_.setMessage(builderForValue.build()); + serviceIdBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000001; onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder mergeDetails(context.ContextOuterClass.OpticalLinkDetails value) { - if (detailsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0) && details_ != null && details_ != context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) { - getDetailsBuilder().mergeFrom(value); + public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) { + if (serviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) { + getServiceIdBuilder().mergeFrom(value); } else { - details_ = value; + serviceId_ = value; } } else { - detailsBuilder_.mergeFrom(value); + serviceIdBuilder_.mergeFrom(value); } - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000001; onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder clearDetails() { - bitField0_ = (bitField0_ & ~0x00000002); - details_ = null; - if (detailsBuilder_ != null) { - detailsBuilder_.dispose(); - detailsBuilder_ = null; + public Builder clearServiceId() { + bitField0_ = (bitField0_ & ~0x00000001); + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); + serviceIdBuilder_ = null; } onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public context.ContextOuterClass.OpticalLinkDetails.Builder getDetailsBuilder() { - bitField0_ |= 0x00000002; + public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); - return getDetailsFieldBuilder().getBuilder(); + return getServiceIdFieldBuilder().getBuilder(); } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() { - if (detailsBuilder_ != null) { - return detailsBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { + if (serviceIdBuilder_ != null) { + return serviceIdBuilder_.getMessageOrBuilder(); } else { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getDetailsFieldBuilder() { - if (detailsBuilder_ == null) { - detailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDetails(), getParentForChildren(), isClean()); - details_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getServiceIdFieldBuilder() { + if (serviceIdBuilder_ == null) { + serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getServiceId(), getParentForChildren(), isClean()); + serviceId_ = null; } - return detailsBuilder_; + return serviceIdBuilder_; } - private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_; + private context.ContextOuterClass.ConfigRule_Custom configruleCustom_; - private com.google.protobuf.SingleFieldBuilderV3 opticalLinkUuidBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 configruleCustomBuilder_; /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ - public boolean hasOpticalLinkUuid() { - return ((bitField0_ & 0x00000004) != 0); + public boolean hasConfigruleCustom() { + return ((bitField0_ & 0x00000002) != 0); } /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ - public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() { + if (configruleCustomBuilder_ == null) { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } else { - return opticalLinkUuidBuilder_.getMessage(); + return configruleCustomBuilder_.getMessage(); } } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) { - if (opticalLinkUuidBuilder_ == null) { + public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) { + if (configruleCustomBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalLinkUuid_ = value; + configruleCustom_ = value; } else { - opticalLinkUuidBuilder_.setMessage(value); + configruleCustomBuilder_.setMessage(value); } - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId.Builder builderForValue) { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = builderForValue.build(); + public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) { + if (configruleCustomBuilder_ == null) { + configruleCustom_ = builderForValue.build(); } else { - opticalLinkUuidBuilder_.setMessage(builderForValue.build()); + configruleCustomBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder mergeOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) { - if (opticalLinkUuidBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0) && opticalLinkUuid_ != null && opticalLinkUuid_ != context.ContextOuterClass.OpticalLinkId.getDefaultInstance()) { - getOpticalLinkUuidBuilder().mergeFrom(value); + public Builder mergeConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) { + if (configruleCustomBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && configruleCustom_ != null && configruleCustom_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) { + getConfigruleCustomBuilder().mergeFrom(value); } else { - opticalLinkUuid_ = value; + configruleCustom_ = value; } } else { - opticalLinkUuidBuilder_.mergeFrom(value); + configruleCustomBuilder_.mergeFrom(value); } - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder clearOpticalLinkUuid() { - bitField0_ = (bitField0_ & ~0x00000004); - opticalLinkUuid_ = null; - if (opticalLinkUuidBuilder_ != null) { - opticalLinkUuidBuilder_.dispose(); - opticalLinkUuidBuilder_ = null; + public Builder clearConfigruleCustom() { + bitField0_ = (bitField0_ & ~0x00000002); + configruleCustom_ = null; + if (configruleCustomBuilder_ != null) { + configruleCustomBuilder_.dispose(); + configruleCustomBuilder_ = null; } onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public context.ContextOuterClass.OpticalLinkId.Builder getOpticalLinkUuidBuilder() { - bitField0_ |= 0x00000004; + public context.ContextOuterClass.ConfigRule_Custom.Builder getConfigruleCustomBuilder() { + bitField0_ |= 0x00000002; onChanged(); - return getOpticalLinkUuidFieldBuilder().getBuilder(); + return getConfigruleCustomFieldBuilder().getBuilder(); } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() { - if (opticalLinkUuidBuilder_ != null) { - return opticalLinkUuidBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() { + if (configruleCustomBuilder_ != null) { + return configruleCustomBuilder_.getMessageOrBuilder(); } else { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalLinkUuidFieldBuilder() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalLinkUuid(), getParentForChildren(), isClean()); - opticalLinkUuid_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getConfigruleCustomFieldBuilder() { + if (configruleCustomBuilder_ == null) { + configruleCustomBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getConfigruleCustom(), getParentForChildren(), isClean()); + configruleCustom_ = null; } - return opticalLinkUuidBuilder_; + return configruleCustomBuilder_; } @java.lang.Override @@ -76310,24 +80366,24 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLink) + // @@protoc_insertion_point(builder_scope:context.ServiceConfigRule) } - // @@protoc_insertion_point(class_scope:context.OpticalLink) - private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.ServiceConfigRule) + private static final context.ContextOuterClass.ServiceConfigRule DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink(); + DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfigRule(); } - public static context.ContextOuterClass.OpticalLink getDefaultInstance() { + public static context.ContextOuterClass.ServiceConfigRule getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public ServiceConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); @@ -76342,17 +80398,17 @@ public final class ContextOuterClass { } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { + public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } @@ -76661,6 +80717,14 @@ public final class ContextOuterClass { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Exclusions_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_QoSProfileId_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_QoSProfileId_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_QoSProfile_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_QoSProfile_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_fieldAccessorTable; @@ -76685,26 +80749,42 @@ public final class ContextOuterClass { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigList_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkId_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigEvent_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkId_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigEvent_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_FiberId_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalEndPointId_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_FiberId_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalEndPointId_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Fiber_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkList_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Fiber_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkList_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLink_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLink_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceConfigRule_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceConfigRule_fieldAccessorTable; + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; } @@ -76712,7 +80792,7 @@ public final class ContextOuterClass { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\376\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n" + "\020DEVICEDRIVER_QKD\020\014*\217\001\n\033DeviceOperationa" + "lStatusEnum\022%\n!DEVICEOPERATIONALSTATUS_U" + "NDEFINED\020\000\022$\n DEVICEOPERATIONALSTATUS_DI" + "SABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS_ENAB" + "LED\020\002*\345\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE" + "_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERV" + "ICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNE" + "CTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n" + "\017SERVICETYPE_E2E\020\005\022$\n SERVICETYPE_OPTICA" + "L_CONNECTIVITY\020\006\022\023\n\017SERVICETYPE_QKD\020\007*\304\001" + "\n\021ServiceStatusEnum\022\033\n\027SERVICESTATUS_UND" + "EFINED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024S" + "ERVICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_U" + "PDATING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOV" + "AL\020\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n" + "\017SliceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINE" + "D\020\000\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTA" + "TUS_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SL" + "ICESTATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VI" + "OLATED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGAC" + "TION_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027" + "\n\023CONFIGACTION_DELETE\020\002*m\n\024ConstraintAct" + "ionEnum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022" + "\030\n\024CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTA" + "CTION_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n" + "\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022" + "\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLAT" + "ION\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032" + "PHYSICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_" + "RESOURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTION" + "S_ISOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n" + "\016ContextService\022:\n\016ListContextIds\022\016.cont" + "ext.Empty\032\026.context.ContextIdList\"\000\0226\n\014L" + "istContexts\022\016.context.Empty\032\024.context.Co" + "ntextList\"\000\0224\n\nGetContext\022\022.context.Cont" + "extId\032\020.context.Context\"\000\0224\n\nSetContext\022" + "\020.context.Context\032\022.context.ContextId\"\000\022" + "5\n\rRemoveContext\022\022.context.ContextId\032\016.c" + "ontext.Empty\"\000\022=\n\020GetContextEvents\022\016.con" + "text.Empty\032\025.context.ContextEvent\"\0000\001\022@\n" + "\017ListTopologyIds\022\022.context.ContextId\032\027.c" + "ontext.TopologyIdList\"\000\022=\n\016ListTopologie" + "s\022\022.context.ContextId\032\025.context.Topology" + "List\"\000\0227\n\013GetTopology\022\023.context.Topology" + "Id\032\021.context.Topology\"\000\022E\n\022GetTopologyDe" + "tails\022\023.context.TopologyId\032\030.context.Top" + "ologyDetails\"\000\0227\n\013SetTopology\022\021.context." + "Topology\032\023.context.TopologyId\"\000\0227\n\016Remov" + "eTopology\022\023.context.TopologyId\032\016.context" + ".Empty\"\000\022?\n\021GetTopologyEvents\022\016.context." + "Empty\032\026.context.TopologyEvent\"\0000\001\0228\n\rLis" + "tDeviceIds\022\016.context.Empty\032\025.context.Dev" + "iceIdList\"\000\0224\n\013ListDevices\022\016.context.Emp" + "ty\032\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021" + ".context.DeviceId\032\017.context.Device\"\000\0221\n\t" + "SetDevice\022\017.context.Device\032\021.context.Dev" + "iceId\"\000\0223\n\014RemoveDevice\022\021.context.Device" + "Id\032\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022" + "\016.context.Empty\032\024.context.DeviceEvent\"\0000" + "\001\022<\n\014SelectDevice\022\025.context.DeviceFilter" + "\032\023.context.DeviceList\"\000\022I\n\021ListEndPointN" + "ames\022\027.context.EndPointIdList\032\031.context." + "EndPointNameList\"\000\0224\n\013ListLinkIds\022\016.cont" + "ext.Empty\032\023.context.LinkIdList\"\000\0220\n\tList" + "Links\022\016.context.Empty\032\021.context.LinkList" + "\"\000\022+\n\007GetLink\022\017.context.LinkId\032\r.context" + ".Link\"\000\022+\n\007SetLink\022\r.context.Link\032\017.cont" + "ext.LinkId\"\000\022/\n\nRemoveLink\022\017.context.Lin" + "kId\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016" + ".context.Empty\032\022.context.LinkEvent\"\0000\001\022>" + "\n\016ListServiceIds\022\022.context.ContextId\032\026.c" + "ontext.ServiceIdList\"\000\022:\n\014ListServices\022\022" + ".context.ContextId\032\024.context.ServiceList" + "\"\000\0224\n\nGetService\022\022.context.ServiceId\032\020.c" + "ontext.Service\"\000\0224\n\nSetService\022\020.context" + ".Service\032\022.context.ServiceId\"\000\0226\n\014UnsetS" + "ervice\022\020.context.Service\032\022.context.Servi" + "ceId\"\000\0225\n\rRemoveService\022\022.context.Servic" + "eId\032\016.context.Empty\"\000\022=\n\020GetServiceEvent" + "s\022\016.context.Empty\032\025.context.ServiceEvent" + "\"\0000\001\022?\n\rSelectService\022\026.context.ServiceF" + "ilter\032\024.context.ServiceList\"\000\022:\n\014ListSli" + "ceIds\022\022.context.ContextId\032\024.context.Slic" + "eIdList\"\000\0226\n\nListSlices\022\022.context.Contex" + "tId\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020." + "context.SliceId\032\016.context.Slice\"\000\022.\n\010Set" + "Slice\022\016.context.Slice\032\020.context.SliceId\"" + "\000\0220\n\nUnsetSlice\022\016.context.Slice\032\020.contex" + "t.SliceId\"\000\0221\n\013RemoveSlice\022\020.context.Sli" + "ceId\032\016.context.Empty\"\000\0229\n\016GetSliceEvents" + "\022\016.context.Empty\032\023.context.SliceEvent\"\0000" + "\001\0229\n\013SelectSlice\022\024.context.SliceFilter\032\022" + ".context.SliceList\"\000\022D\n\021ListConnectionId" + "s\022\022.context.ServiceId\032\031.context.Connecti" + "onIdList\"\000\022@\n\017ListConnections\022\022.context." + "ServiceId\032\027.context.ConnectionList\"\000\022=\n\r" + "GetConnection\022\025.context.ConnectionId\032\023.c" + "ontext.Connection\"\000\022=\n\rSetConnection\022\023.c" + "ontext.Connection\032\025.context.ConnectionId" + "\"\000\022;\n\020RemoveConnection\022\025.context.Connect" + "ionId\032\016.context.Empty\"\000\022C\n\023GetConnection" + "Events\022\016.context.Empty\032\030.context.Connect" + "ionEvent\"\0000\001\022@\n\020GetOpticalConfig\022\016.conte" + "xt.Empty\032\032.context.OpticalConfigList\"\000\022F" + "\n\020SetOpticalConfig\022\026.context.OpticalConf" + "ig\032\030.context.OpticalConfigId\"\000\022I\n\023Select" + "OpticalConfig\022\030.context.OpticalConfigId\032" + "\026.context.OpticalConfig\"\000\0228\n\016SetOpticalL" + "ink\022\024.context.OpticalLink\032\016.context.Empt" + "y\"\000\022@\n\016GetOpticalLink\022\026.context.OpticalL" + "inkId\032\024.context.OpticalLink\"\000\022.\n\010GetFibe" + "r\022\020.context.FiberId\032\016.context.Fiber\"\000b\006p" + "roto3" }; + java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\267\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\022)\n\020optical_link_ids\030\005 \003(\0132\017." + "context.LinkId\"\266\001\n\017TopologyDetails\022(\n\013to" + "pology_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004" + "name\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.De" + "vice\022\034\n\005links\030\004 \003(\0132\r.context.Link\022+\n\rop" + "tical_links\030\005 \003(\0132\024.context.OpticalLink\"" + ";\n\016TopologyIdList\022)\n\014topology_ids\030\001 \003(\0132" + "\023.context.TopologyId\"5\n\014TopologyList\022%\n\n" + "topologies\030\001 \003(\0132\021.context.Topology\"X\n\rT" + "opologyEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022(\n\013topology_id\030\002 \001(\0132\023.context.Topol" + "ogyId\".\n\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r" + ".context.Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 " + "\001(\0132\021.context.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013" + "device_type\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\013" + "2\025.context.DeviceConfig\022G\n\031device_operat" + "ional_status\030\005 \001(\0162$.context.DeviceOpera" + "tionalStatusEnum\0221\n\016device_drivers\030\006 \003(\016" + "2\031.context.DeviceDriverEnum\022+\n\020device_en" + "dpoints\030\007 \003(\0132\021.context.EndPoint\022&\n\ncomp" + "onents\030\010 \003(\0132\022.context.Component\022(\n\rcont" + "roller_id\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tC" + "omponent\022%\n\016component_uuid\030\001 \001(\0132\r.conte" + "xt.Uuid\022\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\na" + "ttributes\030\004 \003(\0132\".context.Component.Attr" + "ibutesEntry\022\016\n\006parent\030\005 \001(\t\0321\n\017Attribute" + "sEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9" + "\n\014DeviceConfig\022)\n\014config_rules\030\001 \003(\0132\023.c" + "ontext.ConfigRule\"5\n\014DeviceIdList\022%\n\ndev" + "ice_ids\030\001 \003(\0132\021.context.DeviceId\".\n\nDevi" + "ceList\022 \n\007devices\030\001 \003(\0132\017.context.Device" + "\"\216\001\n\014DeviceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025." + "context.DeviceIdList\022\031\n\021include_endpoint" + "s\030\002 \001(\010\022\034\n\024include_config_rules\030\003 \001(\010\022\032\n" + "\022include_components\030\004 \001(\010\"\200\001\n\013DeviceEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022$\n\tdevi" + "ce_id\030\002 \001(\0132\021.context.DeviceId\022,\n\rdevice" + "_config\030\003 \001(\0132\025.context.DeviceConfig\"*\n\006" + "LinkId\022 \n\tlink_uuid\030\001 \001(\0132\r.context.Uuid" + "\"I\n\016LinkAttributes\022\033\n\023total_capacity_gbp" + "s\030\001 \001(\002\022\032\n\022used_capacity_gbps\030\002 \001(\002\"\275\001\n\004" + "Link\022 \n\007link_id\030\001 \001(\0132\017.context.LinkId\022\014" + "\n\004name\030\002 \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022+\n\nattributes\030\004 \001(\013" + "2\027.context.LinkAttributes\022(\n\tlink_type\030\005" + " \001(\0162\025.context.LinkTypeEnum\"/\n\nLinkIdLis" + "t\022!\n\010link_ids\030\001 \003(\0132\017.context.LinkId\"(\n\010" + "LinkList\022\034\n\005links\030\001 \003(\0132\r.context.Link\"L" + "\n\tLinkEvent\022\035\n\005event\030\001 \001(\0132\016.context.Eve" + "nt\022 \n\007link_id\030\002 \001(\0132\017.context.LinkId\"X\n\t" + "ServiceId\022&\n\ncontext_id\030\001 \001(\0132\022.context." + "ContextId\022#\n\014service_uuid\030\002 \001(\0132\r.contex" + "t.Uuid\"\333\002\n\007Service\022&\n\nservice_id\030\001 \001(\0132\022" + ".context.ServiceId\022\014\n\004name\030\002 \001(\t\022.\n\014serv" + "ice_type\030\003 \001(\0162\030.context.ServiceTypeEnum" + "\0221\n\024service_endpoint_ids\030\004 \003(\0132\023.context" + ".EndPointId\0220\n\023service_constraints\030\005 \003(\013" + "2\023.context.Constraint\022.\n\016service_status\030" + "\006 \001(\0132\026.context.ServiceStatus\022.\n\016service" + "_config\030\007 \001(\0132\026.context.ServiceConfig\022%\n" + "\ttimestamp\030\010 \001(\0132\022.context.Timestamp\"C\n\r" + "ServiceStatus\0222\n\016service_status\030\001 \001(\0162\032." + "context.ServiceStatusEnum\":\n\rServiceConf" + "ig\022)\n\014config_rules\030\001 \003(\0132\023.context.Confi" + "gRule\"8\n\rServiceIdList\022\'\n\013service_ids\030\001 " + "\003(\0132\022.context.ServiceId\"1\n\013ServiceList\022\"" + "\n\010services\030\001 \003(\0132\020.context.Service\"\225\001\n\rS" + "erviceFilter\022+\n\013service_ids\030\001 \001(\0132\026.cont" + "ext.ServiceIdList\022\034\n\024include_endpoint_id" + "s\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001(\010\022\034\n\024" + "include_config_rules\030\004 \001(\010\"U\n\014ServiceEve" + "nt\022\035\n\005event\030\001 \001(\0132\016.context.Event\022&\n\nser" + "vice_id\030\002 \001(\0132\022.context.ServiceId\"T\n\007Sli" + "ceId\022&\n\ncontext_id\030\001 \001(\0132\022.context.Conte" + "xtId\022!\n\nslice_uuid\030\002 \001(\0132\r.context.Uuid\"" + "\240\003\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.context.Sl" + "iceId\022\014\n\004name\030\002 \001(\t\022/\n\022slice_endpoint_id" + "s\030\003 \003(\0132\023.context.EndPointId\022.\n\021slice_co" + "nstraints\030\004 \003(\0132\023.context.Constraint\022-\n\021" + "slice_service_ids\030\005 \003(\0132\022.context.Servic" + "eId\022,\n\022slice_subslice_ids\030\006 \003(\0132\020.contex" + "t.SliceId\022*\n\014slice_status\030\007 \001(\0132\024.contex" + "t.SliceStatus\022*\n\014slice_config\030\010 \001(\0132\024.co" + "ntext.SliceConfig\022(\n\013slice_owner\030\t \001(\0132\023" + ".context.SliceOwner\022%\n\ttimestamp\030\n \001(\0132\022" + ".context.Timestamp\"E\n\nSliceOwner\022!\n\nowne" + "r_uuid\030\001 \001(\0132\r.context.Uuid\022\024\n\014owner_str" + "ing\030\002 \001(\t\"=\n\013SliceStatus\022.\n\014slice_status" + "\030\001 \001(\0162\030.context.SliceStatusEnum\"8\n\013Slic" + "eConfig\022)\n\014config_rules\030\001 \003(\0132\023.context." + "ConfigRule\"2\n\013SliceIdList\022#\n\tslice_ids\030\001" + " \003(\0132\020.context.SliceId\"+\n\tSliceList\022\036\n\006s" + "lices\030\001 \003(\0132\016.context.Slice\"\312\001\n\013SliceFil" + "ter\022\'\n\tslice_ids\030\001 \001(\0132\024.context.SliceId" + "List\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023in" + "clude_constraints\030\003 \001(\010\022\033\n\023include_servi" + "ce_ids\030\004 \001(\010\022\034\n\024include_subslice_ids\030\005 \001" + "(\010\022\034\n\024include_config_rules\030\006 \001(\010\"O\n\nSlic" + "eEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022\"\n" + "\010slice_id\030\002 \001(\0132\020.context.SliceId\"6\n\014Con" + "nectionId\022&\n\017connection_uuid\030\001 \001(\0132\r.con" + "text.Uuid\"2\n\025ConnectionSettings_L0\022\031\n\021ls" + "p_symbolic_name\030\001 \001(\t\"\236\001\n\025ConnectionSett" + "ings_L2\022\027\n\017src_mac_address\030\001 \001(\t\022\027\n\017dst_" + "mac_address\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n" + "\007vlan_id\030\004 \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mp" + "ls_traffic_class\030\006 \001(\r\"t\n\025ConnectionSett" + "ings_L3\022\026\n\016src_ip_address\030\001 \001(\t\022\026\n\016dst_i" + "p_address\030\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protoco" + "l\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025ConnectionSettin" + "gs_L4\022\020\n\010src_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(" + "\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022Co" + "nnectionSettings\022*\n\002l0\030\001 \001(\0132\036.context.C" + "onnectionSettings_L0\022*\n\002l2\030\002 \001(\0132\036.conte" + "xt.ConnectionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.c" + "ontext.ConnectionSettings_L3\022*\n\002l4\030\004 \001(\013" + "2\036.context.ConnectionSettings_L4\"\363\001\n\nCon" + "nection\022,\n\rconnection_id\030\001 \001(\0132\025.context" + ".ConnectionId\022&\n\nservice_id\030\002 \001(\0132\022.cont" + "ext.ServiceId\0223\n\026path_hops_endpoint_ids\030" + "\003 \003(\0132\023.context.EndPointId\022+\n\017sub_servic" + "e_ids\030\004 \003(\0132\022.context.ServiceId\022-\n\010setti" + "ngs\030\005 \001(\0132\033.context.ConnectionSettings\"A" + "\n\020ConnectionIdList\022-\n\016connection_ids\030\001 \003" + "(\0132\025.context.ConnectionId\":\n\016ConnectionL" + "ist\022(\n\013connections\030\001 \003(\0132\023.context.Conne" + "ction\"^\n\017ConnectionEvent\022\035\n\005event\030\001 \001(\0132" + "\016.context.Event\022,\n\rconnection_id\030\002 \001(\0132\025" + ".context.ConnectionId\"\202\001\n\nEndPointId\022(\n\013" + "topology_id\030\001 \001(\0132\023.context.TopologyId\022$" + "\n\tdevice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\r" + "endpoint_uuid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010E" + "ndPoint\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type" + "\030\003 \001(\t\0229\n\020kpi_sample_types\030\004 \003(\0162\037.kpi_s" + "ample_types.KpiSampleType\022,\n\021endpoint_lo" + "cation\030\005 \001(\0132\021.context.Location\"{\n\014EndPo" + "intName\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoi" + "nt_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016" + "EndPointIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023.c" + "ontext.EndPointId\"A\n\020EndPointNameList\022-\n" + "\016endpoint_names\030\001 \003(\0132\025.context.EndPoint" + "Name\"A\n\021ConfigRule_Custom\022\024\n\014resource_ke" + "y\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016Confi" + "gRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.context" + ".EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclR" + "uleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031." + "context.ConfigActionEnum\022,\n\006custom\030\002 \001(\013" + "2\032.context.ConfigRule_CustomH\000\022&\n\003acl\030\003 " + "\001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013config" + "_rule\"F\n\021Constraint_Custom\022\027\n\017constraint" + "_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n" + "\023Constraint_Schedule\022\027\n\017start_timestamp\030" + "\001 \001(\001\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Posi" + "tion\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(" + "\002\"\204\001\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_" + "position\030\002 \001(\0132\025.context.GPS_PositionH\000\022" + "\023\n\tinterface\030\003 \001(\tH\000\022\026\n\014circuit_pack\030\004 \001" + "(\tH\000B\n\n\010location\"l\n\033Constraint_EndPointL" + "ocation\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022#\n\010location\030\002 \001(\0132\021.context.Lo" + "cation\"Y\n\033Constraint_EndPointPriority\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Late" + "ncy\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrain" + "t_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c\n" + "\033Constraint_SLA_Availability\022\032\n\022num_disj" + "oint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n\014" + "availability\030\003 \001(\002\"V\n\036Constraint_SLA_Iso" + "lation_level\0224\n\017isolation_level\030\001 \003(\0162\033." + "context.IsolationLevelEnum\"\242\001\n\025Constrain" + "t_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nde" + "vice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014end" + "point_ids\030\003 \003(\0132\023.context.EndPointId\022!\n\010" + "link_ids\030\004 \003(\0132\017.context.LinkId\"5\n\014QoSPr" + "ofileId\022%\n\016qos_profile_id\030\001 \001(\0132\r.contex" + "t.Uuid\"`\n\025Constraint_QoSProfile\022-\n\016qos_p" + "rofile_id\030\001 \001(\0132\025.context.QoSProfileId\022\030" + "\n\020qos_profile_name\030\002 \001(\t\"\222\005\n\nConstraint\022" + "-\n\006action\030\001 \001(\0162\035.context.ConstraintActi" + "onEnum\022,\n\006custom\030\002 \001(\0132\032.context.Constra" + "int_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034.context" + ".Constraint_ScheduleH\000\022A\n\021endpoint_locat" + "ion\030\004 \001(\0132$.context.Constraint_EndPointL" + "ocationH\000\022A\n\021endpoint_priority\030\005 \001(\0132$.c" + "ontext.Constraint_EndPointPriorityH\000\0228\n\014" + "sla_capacity\030\006 \001(\0132 .context.Constraint_" + "SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.co" + "ntext.Constraint_SLA_LatencyH\000\022@\n\020sla_av" + "ailability\030\010 \001(\0132$.context.Constraint_SL" + "A_AvailabilityH\000\022@\n\rsla_isolation\030\t \001(\0132" + "\'.context.Constraint_SLA_Isolation_level" + "H\000\0224\n\nexclusions\030\n \001(\0132\036.context.Constra" + "int_ExclusionsH\000\0225\n\013qos_profile\030\013 \001(\0132\036." + "context.Constraint_QoSProfileH\000B\014\n\nconst" + "raint\"^\n\022TeraFlowController\022&\n\ncontext_i" + "d\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_addres" + "s\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024AuthenticationR" + "esult\022&\n\ncontext_id\030\001 \001(\0132\022.context.Cont" + "extId\022\025\n\rauthenticated\030\002 \001(\010\"-\n\017OpticalC" + "onfigId\022\032\n\022opticalconfig_uuid\030\001 \001(\t\"y\n\rO" + "pticalConfig\0222\n\020opticalconfig_id\030\001 \001(\0132\030" + ".context.OpticalConfigId\022\016\n\006config\030\002 \001(\t" + "\022$\n\tdevice_id\030\003 \001(\0132\021.context.DeviceId\"C" + "\n\021OpticalConfigList\022.\n\016opticalconfigs\030\001 " + "\003(\0132\026.context.OpticalConfig\"g\n\022OpticalCo" + "nfigEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event" + "\0222\n\020opticalconfig_id\030\002 \001(\0132\030.context.Opt" + "icalConfigId\"_\n\021OpticalEndPointId\022$\n\tdev" + "ice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpo" + "int_uuid\030\003 \001(\0132\r.context.Uuid\">\n\017Optical" + "LinkList\022+\n\roptical_links\030\001 \003(\0132\024.contex" + "t.OpticalLink\"\304\003\n\022OpticalLinkDetails\022\016\n\006" + "length\030\001 \001(\002\022\020\n\010src_port\030\002 \001(\t\022\020\n\010dst_po" + "rt\030\003 \001(\t\022\027\n\017local_peer_port\030\004 \001(\t\022\030\n\020rem" + "ote_peer_port\030\005 \001(\t\022\014\n\004used\030\006 \001(\010\0228\n\007c_s" + "lots\030\007 \003(\0132\'.context.OpticalLinkDetails." + "CSlotsEntry\0228\n\007l_slots\030\010 \003(\0132\'.context.O" + "pticalLinkDetails.LSlotsEntry\0228\n\007s_slots" + "\030\t \003(\0132\'.context.OpticalLinkDetails.SSlo" + "tsEntry\032-\n\013CSlotsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005v" + "alue\030\002 \001(\005:\0028\001\032-\n\013LSlotsEntry\022\013\n\003key\030\001 \001" + "(\t\022\r\n\005value\030\002 \001(\005:\0028\001\032-\n\013SSlotsEntry\022\013\n\003" + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"\243\001\n\013Optical" + "Link\022\014\n\004name\030\001 \001(\t\0224\n\017optical_details\030\002 " + "\001(\0132\033.context.OpticalLinkDetails\022 \n\007link" + "_id\030\003 \001(\0132\017.context.LinkId\022.\n\021link_endpo" + "int_ids\030\004 \003(\0132\023.context.EndPointId\"r\n\021Se" + "rviceConfigRule\022&\n\nservice_id\030\001 \001(\0132\022.co" + "ntext.ServiceId\0225\n\021configrule_custom\030\002 \001" + "(\0132\032.context.ConfigRule_Custom*j\n\rEventT" + "ypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVEN" + "TTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n\020" + "EVENTTYPE_REMOVE\020\003*\376\002\n\020DeviceDriverEnum\022" + "\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDRI" + "VER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSPO" + "RT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICED" + "RIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICED" + "RIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006\022" + "\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICEDR" + "IVER_GNMI_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_O" + "PTICAL_TFS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020\n" + "\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_QK" + "D\020\014*\217\001\n\033DeviceOperationalStatusEnum\022%\n!D" + "EVICEOPERATIONALSTATUS_UNDEFINED\020\000\022$\n DE" + "VICEOPERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVI" + "CEOPERATIONALSTATUS_ENABLED\020\002*\212\001\n\014LinkTy" + "peEnum\022\024\n\020LINKTYPE_UNKNOWN\020\000\022\023\n\017LINKTYPE" + "_COPPER\020\001\022\033\n\027LINKTYPE_VIRTUAL_COPPER\020\002\022\024" + "\n\020LINKTYPE_OPTICAL\020\003\022\034\n\030LINKTYPE_VIRTUAL" + "_OPTICAL\020\004*\345\001\n\017ServiceTypeEnum\022\027\n\023SERVIC" + "ETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n" + "\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_" + "CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE_TE" + "\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SERVICETYPE_O" + "PTICAL_CONNECTIVITY\020\006\022\023\n\017SERVICETYPE_QKD" + "\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027SERVICESTATU" + "S_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001" + "\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTA" + "TUS_UPDATING\020\003\022!\n\035SERVICESTATUS_PENDING_" + "REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020" + "\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICESTATUS_UND" + "EFINED\020\000\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLI" + "CESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022" + "\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_S" + "LA_VIOLATED\020\005*]\n\020ConfigActionEnum\022\032\n\026CON" + "FIGACTION_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SE" + "T\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n\024Constrai" + "ntActionEnum\022\036\n\032CONSTRAINTACTION_UNDEFIN" + "ED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTR" + "AINTACTION_DELETE\020\002*\203\002\n\022IsolationLevelEn" + "um\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATI" + "ON\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_I" + "SOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020" + "\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIR" + "TUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUN" + "CTIONS_ISOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020" + "\0102\202\034\n\016ContextService\022:\n\016ListContextIds\022\016" + ".context.Empty\032\026.context.ContextIdList\"\000" + "\0226\n\014ListContexts\022\016.context.Empty\032\024.conte" + "xt.ContextList\"\000\0224\n\nGetContext\022\022.context" + ".ContextId\032\020.context.Context\"\000\0224\n\nSetCon" + "text\022\020.context.Context\032\022.context.Context" + "Id\"\000\0225\n\rRemoveContext\022\022.context.ContextI" + "d\032\016.context.Empty\"\000\022=\n\020GetContextEvents\022" + "\016.context.Empty\032\025.context.ContextEvent\"\000" + "0\001\022@\n\017ListTopologyIds\022\022.context.ContextI" + "d\032\027.context.TopologyIdList\"\000\022=\n\016ListTopo" + "logies\022\022.context.ContextId\032\025.context.Top" + "ologyList\"\000\0227\n\013GetTopology\022\023.context.Top" + "ologyId\032\021.context.Topology\"\000\022E\n\022GetTopol" + "ogyDetails\022\023.context.TopologyId\032\030.contex" + "t.TopologyDetails\"\000\0227\n\013SetTopology\022\021.con" + "text.Topology\032\023.context.TopologyId\"\000\0227\n\016" + "RemoveTopology\022\023.context.TopologyId\032\016.co" + "ntext.Empty\"\000\022?\n\021GetTopologyEvents\022\016.con" + "text.Empty\032\026.context.TopologyEvent\"\0000\001\0228" + "\n\rListDeviceIds\022\016.context.Empty\032\025.contex" + "t.DeviceIdList\"\000\0224\n\013ListDevices\022\016.contex" + "t.Empty\032\023.context.DeviceList\"\000\0221\n\tGetDev" + "ice\022\021.context.DeviceId\032\017.context.Device\"" + "\000\0221\n\tSetDevice\022\017.context.Device\032\021.contex" + "t.DeviceId\"\000\0223\n\014RemoveDevice\022\021.context.D" + "eviceId\032\016.context.Empty\"\000\022;\n\017GetDeviceEv" + "ents\022\016.context.Empty\032\024.context.DeviceEve" + "nt\"\0000\001\022<\n\014SelectDevice\022\025.context.DeviceF" + "ilter\032\023.context.DeviceList\"\000\022I\n\021ListEndP" + "ointNames\022\027.context.EndPointIdList\032\031.con" + "text.EndPointNameList\"\000\0224\n\013ListLinkIds\022\016" + ".context.Empty\032\023.context.LinkIdList\"\000\0220\n" + "\tListLinks\022\016.context.Empty\032\021.context.Lin" + "kList\"\000\022+\n\007GetLink\022\017.context.LinkId\032\r.co" + "ntext.Link\"\000\022+\n\007SetLink\022\r.context.Link\032\017" + ".context.LinkId\"\000\022/\n\nRemoveLink\022\017.contex" + "t.LinkId\032\016.context.Empty\"\000\0227\n\rGetLinkEve" + "nts\022\016.context.Empty\032\022.context.LinkEvent\"" + "\0000\001\022>\n\016ListServiceIds\022\022.context.ContextI" + "d\032\026.context.ServiceIdList\"\000\022:\n\014ListServi" + "ces\022\022.context.ContextId\032\024.context.Servic" + "eList\"\000\0224\n\nGetService\022\022.context.ServiceI" + "d\032\020.context.Service\"\000\0224\n\nSetService\022\020.co" + "ntext.Service\032\022.context.ServiceId\"\000\0226\n\014U" + "nsetService\022\020.context.Service\032\022.context." + "ServiceId\"\000\0225\n\rRemoveService\022\022.context.S" + "erviceId\032\016.context.Empty\"\000\022=\n\020GetService" + "Events\022\016.context.Empty\032\025.context.Service" + "Event\"\0000\001\022?\n\rSelectService\022\026.context.Ser" + "viceFilter\032\024.context.ServiceList\"\000\022:\n\014Li" + "stSliceIds\022\022.context.ContextId\032\024.context" + ".SliceIdList\"\000\0226\n\nListSlices\022\022.context.C" + "ontextId\032\022.context.SliceList\"\000\022.\n\010GetSli" + "ce\022\020.context.SliceId\032\016.context.Slice\"\000\022." + "\n\010SetSlice\022\016.context.Slice\032\020.context.Sli" + "ceId\"\000\0220\n\nUnsetSlice\022\016.context.Slice\032\020.c" + "ontext.SliceId\"\000\0221\n\013RemoveSlice\022\020.contex" + "t.SliceId\032\016.context.Empty\"\000\0229\n\016GetSliceE" + "vents\022\016.context.Empty\032\023.context.SliceEve" + "nt\"\0000\001\0229\n\013SelectSlice\022\024.context.SliceFil" + "ter\032\022.context.SliceList\"\000\022D\n\021ListConnect" + "ionIds\022\022.context.ServiceId\032\031.context.Con" + "nectionIdList\"\000\022@\n\017ListConnections\022\022.con" + "text.ServiceId\032\027.context.ConnectionList\"" + "\000\022=\n\rGetConnection\022\025.context.ConnectionI" + "d\032\023.context.Connection\"\000\022=\n\rSetConnectio" + "n\022\023.context.Connection\032\025.context.Connect" + "ionId\"\000\022;\n\020RemoveConnection\022\025.context.Co" + "nnectionId\032\016.context.Empty\"\000\022C\n\023GetConne" + "ctionEvents\022\016.context.Empty\032\030.context.Co" + "nnectionEvent\"\0000\001\022@\n\020GetOpticalConfig\022\016." + "context.Empty\032\032.context.OpticalConfigLis" + "t\"\000\022F\n\020SetOpticalConfig\022\026.context.Optica" + "lConfig\032\030.context.OpticalConfigId\"\000\022I\n\023U" + "pdateOpticalConfig\022\026.context.OpticalConf" + "ig\032\030.context.OpticalConfigId\"\000\022I\n\023Select" + "OpticalConfig\022\030.context.OpticalConfigId\032" + "\026.context.OpticalConfig\"\000\022A\n\023DeleteOptic" + "alConfig\022\030.context.OpticalConfigId\032\016.con" + "text.Empty\"\000\022@\n\024DeleteOpticalChannel\022\026.c" + "ontext.OpticalConfig\032\016.context.Empty\"\000\0228" + "\n\016SetOpticalLink\022\024.context.OpticalLink\032\016" + ".context.Empty\"\000\0229\n\016GetOpticalLink\022\017.con" + "text.LinkId\032\024.context.OpticalLink\"\000\0226\n\021D" + "eleteOpticalLink\022\017.context.LinkId\032\016.cont" + "ext.Empty\"\000\022@\n\022GetOpticalLinkList\022\016.cont" + "ext.Empty\032\030.context.OpticalLinkList\"\000\022G\n" + "\027DeleteServiceConfigRule\022\032.context.Servi" + "ceConfigRule\032\016.context.Empty\"\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {}); @@ -76735,9 +80815,9 @@ public final class ContextOuterClass { internal_static_context_TopologyId_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_context_TopologyId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyId_descriptor, new java.lang.String[] { "ContextId", "TopologyUuid" }); internal_static_context_Topology_descriptor = getDescriptor().getMessageTypes().get(10); - internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds" }); + internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", "OpticalLinkIds" }); internal_static_context_TopologyDetails_descriptor = getDescriptor().getMessageTypes().get(11); - internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links" }); + internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links", "OpticalLinks" }); internal_static_context_TopologyIdList_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_context_TopologyIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyIdList_descriptor, new java.lang.String[] { "TopologyIds" }); internal_static_context_TopologyList_descriptor = getDescriptor().getMessageTypes().get(13); @@ -76767,7 +80847,7 @@ public final class ContextOuterClass { internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24); internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" }); internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25); - internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes" }); + internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes", "LinkType" }); internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26); internal_static_context_LinkIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkIdList_descriptor, new java.lang.String[] { "LinkIds" }); internal_static_context_LinkList_descriptor = getDescriptor().getMessageTypes().get(27); @@ -76851,7 +80931,7 @@ public final class ContextOuterClass { internal_static_context_GPS_Position_descriptor = getDescriptor().getMessageTypes().get(66); internal_static_context_GPS_Position_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_GPS_Position_descriptor, new java.lang.String[] { "Latitude", "Longitude" }); internal_static_context_Location_descriptor = getDescriptor().getMessageTypes().get(67); - internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Location" }); + internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Interface", "CircuitPack", "Location" }); internal_static_context_Constraint_EndPointLocation_descriptor = getDescriptor().getMessageTypes().get(68); internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointLocation_descriptor, new java.lang.String[] { "EndpointId", "Location" }); internal_static_context_Constraint_EndPointPriority_descriptor = getDescriptor().getMessageTypes().get(69); @@ -76866,28 +80946,40 @@ public final class ContextOuterClass { internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Isolation_level_descriptor, new java.lang.String[] { "IsolationLevel" }); internal_static_context_Constraint_Exclusions_descriptor = getDescriptor().getMessageTypes().get(74); internal_static_context_Constraint_Exclusions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Exclusions_descriptor, new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds" }); - internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(75); - internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint" }); - internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(76); + internal_static_context_QoSProfileId_descriptor = getDescriptor().getMessageTypes().get(75); + internal_static_context_QoSProfileId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_QoSProfileId_descriptor, new java.lang.String[] { "QosProfileId" }); + internal_static_context_Constraint_QoSProfile_descriptor = getDescriptor().getMessageTypes().get(76); + internal_static_context_Constraint_QoSProfile_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_QoSProfile_descriptor, new java.lang.String[] { "QosProfileId", "QosProfileName" }); + internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(77); + internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "QosProfile", "Constraint" }); + internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(78); internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" }); - internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(77); + internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(79); internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" }); - internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(78); + internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(80); internal_static_context_OpticalConfigId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigId_descriptor, new java.lang.String[] { "OpticalconfigUuid" }); - internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(79); - internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config" }); - internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(80); + internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(81); + internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config", "DeviceId" }); + internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(82); internal_static_context_OpticalConfigList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigList_descriptor, new java.lang.String[] { "Opticalconfigs" }); - internal_static_context_OpticalLinkId_descriptor = getDescriptor().getMessageTypes().get(81); - internal_static_context_OpticalLinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkId_descriptor, new java.lang.String[] { "OpticalLinkUuid" }); - internal_static_context_FiberId_descriptor = getDescriptor().getMessageTypes().get(82); - internal_static_context_FiberId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_FiberId_descriptor, new java.lang.String[] { "FiberUuid" }); - internal_static_context_Fiber_descriptor = getDescriptor().getMessageTypes().get(83); - internal_static_context_Fiber_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Fiber_descriptor, new java.lang.String[] { "ID", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "CSlots", "LSlots", "SSlots", "Length", "Used", "FiberUuid" }); - internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(84); - internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "Source", "Target", "Fibers" }); - internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(85); - internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "Details", "OpticalLinkUuid" }); + internal_static_context_OpticalConfigEvent_descriptor = getDescriptor().getMessageTypes().get(83); + internal_static_context_OpticalConfigEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigEvent_descriptor, new java.lang.String[] { "Event", "OpticalconfigId" }); + internal_static_context_OpticalEndPointId_descriptor = getDescriptor().getMessageTypes().get(84); + internal_static_context_OpticalEndPointId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalEndPointId_descriptor, new java.lang.String[] { "DeviceId", "EndpointUuid" }); + internal_static_context_OpticalLinkList_descriptor = getDescriptor().getMessageTypes().get(85); + internal_static_context_OpticalLinkList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkList_descriptor, new java.lang.String[] { "OpticalLinks" }); + internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(86); + internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "Used", "CSlots", "LSlots", "SSlots" }); + internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(0); + internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(1); + internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(2); + internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(87); + internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "OpticalDetails", "LinkId", "LinkEndpointIds" }); + internal_static_context_ServiceConfigRule_descriptor = getDescriptor().getMessageTypes().get(88); + internal_static_context_ServiceConfigRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceConfigRule_descriptor, new java.lang.String[] { "ServiceId", "ConfigruleCustom" }); acl.Acl.getDescriptor(); kpi_sample_types.KpiSampleTypes.getDescriptor(); } diff --git a/src/policy/target/generated-sources/grpc/context/ContextService.java b/src/policy/target/generated-sources/grpc/context/ContextService.java index 32544e6be..d953e779f 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextService.java +++ b/src/policy/target/generated-sources/grpc/context/ContextService.java @@ -98,13 +98,23 @@ public interface ContextService extends MutinyService { io.smallrye.mutiny.Uni setOpticalConfig(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request); + io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request); + + io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request); - io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request); + io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request); + + io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request); + + io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request); - io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request); + io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request); io.smallrye.mutiny.Multi getContextEvents(context.ContextOuterClass.Empty request); diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java index d3c1b6285..3809f8afb 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java +++ b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java @@ -409,6 +409,15 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } + @Override + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + try { + return delegate.updateOpticalConfig(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { try { @@ -418,6 +427,24 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } + @Override + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + try { + return delegate.deleteOpticalConfig(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + try { + return delegate.deleteOpticalChannel(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { try { @@ -428,7 +455,7 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } @Override - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { try { return delegate.getOpticalLink(request); } catch (UnsupportedOperationException e) { @@ -437,9 +464,27 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } @Override - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + try { + return delegate.deleteOpticalLink(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + try { + return delegate.getOpticalLinkList(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { try { - return delegate.getFiber(request); + return delegate.deleteServiceConfigRule(request); } catch (UnsupportedOperationException e) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java index b1773578d..00e56c4f4 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java +++ b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java @@ -245,24 +245,49 @@ public class ContextServiceClient implements ContextService, MutinyClient updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return stub.updateOpticalConfig(request); + } + @Override public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return stub.selectOpticalConfig(request); } + @Override + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return stub.deleteOpticalConfig(request); + } + + @Override + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return stub.deleteOpticalChannel(request); + } + @Override public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { return stub.setOpticalLink(request); } @Override - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { return stub.getOpticalLink(request); } @Override - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { - return stub.getFiber(request); + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return stub.deleteOpticalLink(request); + } + + @Override + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + return stub.getOpticalLinkList(request); + } + + @Override + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return stub.deleteServiceConfigRule(request); } @Override diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java index 233312dd7..73a440e7a 100644 --- a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java @@ -779,6 +779,21 @@ public final class ContextServiceGrpc { return getSetOpticalConfigMethod; } + private static volatile io.grpc.MethodDescriptor getUpdateOpticalConfigMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "UpdateOpticalConfig", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.OpticalConfigId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getUpdateOpticalConfigMethod() { + io.grpc.MethodDescriptor getUpdateOpticalConfigMethod; + if ((getUpdateOpticalConfigMethod = ContextServiceGrpc.getUpdateOpticalConfigMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getUpdateOpticalConfigMethod = ContextServiceGrpc.getUpdateOpticalConfigMethod) == null) { + ContextServiceGrpc.getUpdateOpticalConfigMethod = getUpdateOpticalConfigMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "UpdateOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UpdateOpticalConfig")).build(); + } + } + } + return getUpdateOpticalConfigMethod; + } + private static volatile io.grpc.MethodDescriptor getSelectOpticalConfigMethod; @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.OpticalConfig.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) @@ -794,6 +809,36 @@ public final class ContextServiceGrpc { return getSelectOpticalConfigMethod; } + private static volatile io.grpc.MethodDescriptor getDeleteOpticalConfigMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalConfigMethod() { + io.grpc.MethodDescriptor getDeleteOpticalConfigMethod; + if ((getDeleteOpticalConfigMethod = ContextServiceGrpc.getDeleteOpticalConfigMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalConfigMethod = ContextServiceGrpc.getDeleteOpticalConfigMethod) == null) { + ContextServiceGrpc.getDeleteOpticalConfigMethod = getDeleteOpticalConfigMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalConfig")).build(); + } + } + } + return getDeleteOpticalConfigMethod; + } + + private static volatile io.grpc.MethodDescriptor getDeleteOpticalChannelMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalChannel", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalChannelMethod() { + io.grpc.MethodDescriptor getDeleteOpticalChannelMethod; + if ((getDeleteOpticalChannelMethod = ContextServiceGrpc.getDeleteOpticalChannelMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalChannelMethod = ContextServiceGrpc.getDeleteOpticalChannelMethod) == null) { + ContextServiceGrpc.getDeleteOpticalChannelMethod = getDeleteOpticalChannelMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalChannel")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalChannel")).build(); + } + } + } + return getDeleteOpticalChannelMethod; + } + private static volatile io.grpc.MethodDescriptor getSetOpticalLinkMethod; @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalLink", requestType = context.ContextOuterClass.OpticalLink.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) @@ -809,34 +854,64 @@ public final class ContextServiceGrpc { return getSetOpticalLinkMethod; } - private static volatile io.grpc.MethodDescriptor getGetOpticalLinkMethod; + private static volatile io.grpc.MethodDescriptor getGetOpticalLinkMethod; - @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.OpticalLinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) - public static io.grpc.MethodDescriptor getGetOpticalLinkMethod() { - io.grpc.MethodDescriptor getGetOpticalLinkMethod; + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetOpticalLinkMethod() { + io.grpc.MethodDescriptor getGetOpticalLinkMethod; if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) { synchronized (ContextServiceGrpc.class) { if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) { - ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build(); + ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build(); } } } return getGetOpticalLinkMethod; } - private static volatile io.grpc.MethodDescriptor getGetFiberMethod; + private static volatile io.grpc.MethodDescriptor getDeleteOpticalLinkMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalLinkMethod() { + io.grpc.MethodDescriptor getDeleteOpticalLinkMethod; + if ((getDeleteOpticalLinkMethod = ContextServiceGrpc.getDeleteOpticalLinkMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalLinkMethod = ContextServiceGrpc.getDeleteOpticalLinkMethod) == null) { + ContextServiceGrpc.getDeleteOpticalLinkMethod = getDeleteOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalLink")).build(); + } + } + } + return getDeleteOpticalLinkMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetOpticalLinkListMethod; - @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetFiber", requestType = context.ContextOuterClass.FiberId.class, responseType = context.ContextOuterClass.Fiber.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) - public static io.grpc.MethodDescriptor getGetFiberMethod() { - io.grpc.MethodDescriptor getGetFiberMethod; - if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) { + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLinkList", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.OpticalLinkList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetOpticalLinkListMethod() { + io.grpc.MethodDescriptor getGetOpticalLinkListMethod; + if ((getGetOpticalLinkListMethod = ContextServiceGrpc.getGetOpticalLinkListMethod) == null) { synchronized (ContextServiceGrpc.class) { - if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) { - ContextServiceGrpc.getGetFiberMethod = getGetFiberMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetFiber")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.FiberId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Fiber.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetFiber")).build(); + if ((getGetOpticalLinkListMethod = ContextServiceGrpc.getGetOpticalLinkListMethod) == null) { + ContextServiceGrpc.getGetOpticalLinkListMethod = getGetOpticalLinkListMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLinkList")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLinkList")).build(); } } } - return getGetFiberMethod; + return getGetOpticalLinkListMethod; + } + + private static volatile io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteServiceConfigRule", requestType = context.ContextOuterClass.ServiceConfigRule.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod() { + io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod; + if ((getDeleteServiceConfigRuleMethod = ContextServiceGrpc.getDeleteServiceConfigRuleMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteServiceConfigRuleMethod = ContextServiceGrpc.getDeleteServiceConfigRuleMethod) == null) { + ContextServiceGrpc.getDeleteServiceConfigRuleMethod = getDeleteServiceConfigRuleMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteServiceConfigRule")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceConfigRule.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteServiceConfigRule")).build(); + } + } + } + return getDeleteServiceConfigRuleMethod; } /** @@ -1194,12 +1269,30 @@ public final class ContextServiceGrpc { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalConfigMethod(), responseObserver); } + /** + */ + default void updateOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUpdateOpticalConfigMethod(), responseObserver); + } + /** */ default void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectOpticalConfigMethod(), responseObserver); } + /** + */ + default void deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalConfigMethod(), responseObserver); + } + + /** + */ + default void deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalChannelMethod(), responseObserver); + } + /** */ default void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { @@ -1208,14 +1301,26 @@ public final class ContextServiceGrpc { /** */ - default void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { + default void getOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkMethod(), responseObserver); } /** */ - default void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetFiberMethod(), responseObserver); + default void deleteOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalLinkMethod(), responseObserver); + } + + /** + */ + default void getOpticalLinkList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkListMethod(), responseObserver); + } + + /** + */ + default void deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteServiceConfigRuleMethod(), responseObserver); } } @@ -1553,12 +1658,30 @@ public final class ContextServiceGrpc { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void updateOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getUpdateOpticalConfigMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalConfigMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalChannelMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { @@ -1567,14 +1690,26 @@ public final class ContextServiceGrpc { /** */ - public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { + public void getOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request, responseObserver); } /** */ - public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request, responseObserver); + public void deleteOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalLinkMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getOpticalLinkList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkListMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteServiceConfigRuleMethod(), getCallOptions()), request, responseObserver); } } @@ -1901,12 +2036,30 @@ public final class ContextServiceGrpc { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalConfigMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.OpticalConfigId updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getUpdateOpticalConfigMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.OpticalConfig selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectOpticalConfigMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.Empty deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalConfigMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.Empty deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalChannelMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.Empty setOpticalLink(context.ContextOuterClass.OpticalLink request) { @@ -1915,14 +2068,26 @@ public final class ContextServiceGrpc { /** */ - public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.LinkId request) { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkMethod(), getCallOptions(), request); } /** */ - public context.ContextOuterClass.Fiber getFiber(context.ContextOuterClass.FiberId request) { - return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetFiberMethod(), getCallOptions(), request); + public context.ContextOuterClass.Empty deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalLinkMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.OpticalLinkList getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkListMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.Empty deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteServiceConfigRuleMethod(), getCallOptions(), request); } } @@ -2207,12 +2372,30 @@ public final class ContextServiceGrpc { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getUpdateOpticalConfigMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalConfigMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalChannelMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture setOpticalLink(context.ContextOuterClass.OpticalLink request) { @@ -2221,14 +2404,26 @@ public final class ContextServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public com.google.common.util.concurrent.ListenableFuture getOpticalLink(context.ContextOuterClass.LinkId request) { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request); } /** */ - public com.google.common.util.concurrent.ListenableFuture getFiber(context.ContextOuterClass.FiberId request) { - return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request); + public com.google.common.util.concurrent.ListenableFuture deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalLinkMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkListMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteServiceConfigRuleMethod(), getCallOptions()), request); } } @@ -2334,13 +2529,23 @@ public final class ContextServiceGrpc { private static final int METHODID_SET_OPTICAL_CONFIG = 50; - private static final int METHODID_SELECT_OPTICAL_CONFIG = 51; + private static final int METHODID_UPDATE_OPTICAL_CONFIG = 51; + + private static final int METHODID_SELECT_OPTICAL_CONFIG = 52; + + private static final int METHODID_DELETE_OPTICAL_CONFIG = 53; + + private static final int METHODID_DELETE_OPTICAL_CHANNEL = 54; - private static final int METHODID_SET_OPTICAL_LINK = 52; + private static final int METHODID_SET_OPTICAL_LINK = 55; - private static final int METHODID_GET_OPTICAL_LINK = 53; + private static final int METHODID_GET_OPTICAL_LINK = 56; - private static final int METHODID_GET_FIBER = 54; + private static final int METHODID_DELETE_OPTICAL_LINK = 57; + + private static final int METHODID_GET_OPTICAL_LINK_LIST = 58; + + private static final int METHODID_DELETE_SERVICE_CONFIG_RULE = 59; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { @@ -2510,17 +2715,32 @@ public final class ContextServiceGrpc { case METHODID_SET_OPTICAL_CONFIG: serviceImpl.setOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_UPDATE_OPTICAL_CONFIG: + serviceImpl.updateOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_SELECT_OPTICAL_CONFIG: serviceImpl.selectOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_DELETE_OPTICAL_CONFIG: + serviceImpl.deleteOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_DELETE_OPTICAL_CHANNEL: + serviceImpl.deleteOpticalChannel((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_SET_OPTICAL_LINK: serviceImpl.setOpticalLink((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_GET_OPTICAL_LINK: - serviceImpl.getOpticalLink((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + serviceImpl.getOpticalLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_DELETE_OPTICAL_LINK: + serviceImpl.deleteOpticalLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_OPTICAL_LINK_LIST: + serviceImpl.getOpticalLinkList((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver) responseObserver); break; - case METHODID_GET_FIBER: - serviceImpl.getFiber((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver) responseObserver); + case METHODID_DELETE_SERVICE_CONFIG_RULE: + serviceImpl.deleteServiceConfigRule((context.ContextOuterClass.ServiceConfigRule) request, (io.grpc.stub.StreamObserver) responseObserver); break; default: throw new AssertionError(); @@ -2538,7 +2758,7 @@ public final class ContextServiceGrpc { } public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_FIBER))).build(); + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_CONFIG))).addMethod(getUpdateOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UPDATE_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getDeleteOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_CONFIG))).addMethod(getDeleteOpticalChannelMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_CHANNEL))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK))).addMethod(getDeleteOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_LINK))).addMethod(getGetOpticalLinkListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK_LIST))).addMethod(getDeleteServiceConfigRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_SERVICE_CONFIG_RULE))).build(); } private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { @@ -2585,7 +2805,7 @@ public final class ContextServiceGrpc { synchronized (ContextServiceGrpc.class) { result = serviceDescriptor; if (result == null) { - serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getGetFiberMethod()).build(); + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getUpdateOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getDeleteOpticalConfigMethod()).addMethod(getDeleteOpticalChannelMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getDeleteOpticalLinkMethod()).addMethod(getGetOpticalLinkListMethod()).addMethod(getDeleteServiceConfigRuleMethod()).build(); } } } diff --git a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java index c6dbb1e92..b97952a61 100644 --- a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java +++ b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java @@ -216,20 +216,40 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalConfig); } + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::updateOpticalConfig); + } + public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectOpticalConfig); } + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalConfig); + } + + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalChannel); + } + public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalLink); } - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLink); } - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { - return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getFiber); + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalLink); + } + + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLinkList); + } + + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteServiceConfigRule); } public io.smallrye.mutiny.Multi getContextEvents(context.ContextOuterClass.Empty request) { @@ -456,19 +476,39 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -502,7 +542,7 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetFiberMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_FIBER, compression))).build(); + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getUpdateOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UPDATE_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalChannelMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_CHANNEL, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkListMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK_LIST, compression))).addMethod(context.ContextServiceGrpc.getDeleteServiceConfigRuleMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_SERVICE_CONFIG_RULE, compression))).build(); } } @@ -608,13 +648,23 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp private static final int METHODID_SET_OPTICAL_CONFIG = 50; - private static final int METHODID_SELECT_OPTICAL_CONFIG = 51; + private static final int METHODID_UPDATE_OPTICAL_CONFIG = 51; + + private static final int METHODID_SELECT_OPTICAL_CONFIG = 52; + + private static final int METHODID_DELETE_OPTICAL_CONFIG = 53; - private static final int METHODID_SET_OPTICAL_LINK = 52; + private static final int METHODID_DELETE_OPTICAL_CHANNEL = 54; - private static final int METHODID_GET_OPTICAL_LINK = 53; + private static final int METHODID_SET_OPTICAL_LINK = 55; - private static final int METHODID_GET_FIBER = 54; + private static final int METHODID_GET_OPTICAL_LINK = 56; + + private static final int METHODID_DELETE_OPTICAL_LINK = 57; + + private static final int METHODID_GET_OPTICAL_LINK_LIST = 58; + + private static final int METHODID_DELETE_SERVICE_CONFIG_RULE = 59; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { @@ -787,17 +837,32 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp case METHODID_SET_OPTICAL_CONFIG: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::setOpticalConfig); break; + case METHODID_UPDATE_OPTICAL_CONFIG: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::updateOpticalConfig); + break; case METHODID_SELECT_OPTICAL_CONFIG: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::selectOpticalConfig); break; + case METHODID_DELETE_OPTICAL_CONFIG: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalConfig); + break; + case METHODID_DELETE_OPTICAL_CHANNEL: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalChannel); + break; case METHODID_SET_OPTICAL_LINK: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::setOpticalLink); break; case METHODID_GET_OPTICAL_LINK: - io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLink); + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLink); + break; + case METHODID_DELETE_OPTICAL_LINK: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalLink); + break; + case METHODID_GET_OPTICAL_LINK_LIST: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLinkList); break; - case METHODID_GET_FIBER: - io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getFiber); + case METHODID_DELETE_SERVICE_CONFIG_RULE: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceConfigRule) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteServiceConfigRule); break; default: throw new java.lang.AssertionError(); diff --git a/src/ztp/target/generated-sources/grpc/acl/Acl.java b/src/ztp/target/generated-sources/grpc/acl/Acl.java index f1895fa72..037bd3858 100644 --- a/src/ztp/target/generated-sources/grpc/acl/Acl.java +++ b/src/ztp/target/generated-sources/grpc/acl/Acl.java @@ -459,6 +459,18 @@ public final class Acl { * @return The endMplsLabel. */ int getEndMplsLabel(); + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + java.lang.String getTcpFlags(); + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + com.google.protobuf.ByteString getTcpFlagsBytes(); } /** @@ -477,6 +489,7 @@ public final class Acl { private AclMatch() { srcAddress_ = ""; dstAddress_ = ""; + tcpFlags_ = ""; } @java.lang.Override @@ -485,86 +498,6 @@ public final class Acl { return new AclMatch(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclMatch(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - dscp_ = input.readUInt32(); - break; - } - case 16: - { - protocol_ = input.readUInt32(); - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - srcAddress_ = s; - break; - } - case 34: - { - java.lang.String s = input.readStringRequireUtf8(); - dstAddress_ = s; - break; - } - case 40: - { - srcPort_ = input.readUInt32(); - break; - } - case 48: - { - dstPort_ = input.readUInt32(); - break; - } - case 56: - { - startMplsLabel_ = input.readUInt32(); - break; - } - case 64: - { - endMplsLabel_ = input.readUInt32(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclMatch_descriptor; } @@ -576,7 +509,7 @@ public final class Acl { public static final int DSCP_FIELD_NUMBER = 1; - private int dscp_; + private int dscp_ = 0; /** * uint32 dscp = 1; @@ -589,7 +522,7 @@ public final class Acl { public static final int PROTOCOL_FIELD_NUMBER = 2; - private int protocol_; + private int protocol_ = 0; /** * uint32 protocol = 2; @@ -602,7 +535,8 @@ public final class Acl { public static final int SRC_ADDRESS_FIELD_NUMBER = 3; - private volatile java.lang.Object srcAddress_; + @SuppressWarnings("serial") + private volatile java.lang.Object srcAddress_ = ""; /** * string src_address = 3; @@ -639,7 +573,8 @@ public final class Acl { public static final int DST_ADDRESS_FIELD_NUMBER = 4; - private volatile java.lang.Object dstAddress_; + @SuppressWarnings("serial") + private volatile java.lang.Object dstAddress_ = ""; /** * string dst_address = 4; @@ -676,7 +611,7 @@ public final class Acl { public static final int SRC_PORT_FIELD_NUMBER = 5; - private int srcPort_; + private int srcPort_ = 0; /** * uint32 src_port = 5; @@ -689,7 +624,7 @@ public final class Acl { public static final int DST_PORT_FIELD_NUMBER = 6; - private int dstPort_; + private int dstPort_ = 0; /** * uint32 dst_port = 6; @@ -702,7 +637,7 @@ public final class Acl { public static final int START_MPLS_LABEL_FIELD_NUMBER = 7; - private int startMplsLabel_; + private int startMplsLabel_ = 0; /** * uint32 start_mpls_label = 7; @@ -715,7 +650,7 @@ public final class Acl { public static final int END_MPLS_LABEL_FIELD_NUMBER = 8; - private int endMplsLabel_; + private int endMplsLabel_ = 0; /** * uint32 end_mpls_label = 8; @@ -726,6 +661,44 @@ public final class Acl { return endMplsLabel_; } + public static final int TCP_FLAGS_FIELD_NUMBER = 9; + + @SuppressWarnings("serial") + private volatile java.lang.Object tcpFlags_ = ""; + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + @java.lang.Override + public java.lang.String getTcpFlags() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tcpFlags_ = s; + return s; + } + } + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + @java.lang.Override + public com.google.protobuf.ByteString getTcpFlagsBytes() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + tcpFlags_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -747,10 +720,10 @@ public final class Acl { if (protocol_ != 0) { output.writeUInt32(2, protocol_); } - if (!getSrcAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_); } - if (!getDstAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_); } if (srcPort_ != 0) { @@ -765,7 +738,10 @@ public final class Acl { if (endMplsLabel_ != 0) { output.writeUInt32(8, endMplsLabel_); } - unknownFields.writeTo(output); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, tcpFlags_); + } + getUnknownFields().writeTo(output); } @java.lang.Override @@ -780,10 +756,10 @@ public final class Acl { if (protocol_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_); } - if (!getSrcAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_); } - if (!getDstAddressBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_); } if (srcPort_ != 0) { @@ -798,7 +774,10 @@ public final class Acl { if (endMplsLabel_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_); } - size += unknownFields.getSerializedSize(); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, tcpFlags_); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -828,7 +807,9 @@ public final class Acl { return false; if (getEndMplsLabel() != other.getEndMplsLabel()) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getTcpFlags().equals(other.getTcpFlags())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -856,7 +837,9 @@ public final class Acl { hash = (53 * hash) + getStartMplsLabel(); hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER; hash = (53 * hash) + getEndMplsLabel(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER; + hash = (53 * hash) + getTcpFlags().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -950,22 +933,16 @@ public final class Acl { // Construct using acl.Acl.AclMatch.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; dscp_ = 0; protocol_ = 0; srcAddress_ = ""; @@ -974,6 +951,7 @@ public final class Acl { dstPort_ = 0; startMplsLabel_ = 0; endMplsLabel_ = 0; + tcpFlags_ = ""; return this; } @@ -999,46 +977,42 @@ public final class Acl { @java.lang.Override public acl.Acl.AclMatch buildPartial() { acl.Acl.AclMatch result = new acl.Acl.AclMatch(this); - result.dscp_ = dscp_; - result.protocol_ = protocol_; - result.srcAddress_ = srcAddress_; - result.dstAddress_ = dstAddress_; - result.srcPort_ = srcPort_; - result.dstPort_ = dstPort_; - result.startMplsLabel_ = startMplsLabel_; - result.endMplsLabel_ = endMplsLabel_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclMatch result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.dscp_ = dscp_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.protocol_ = protocol_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.srcAddress_ = srcAddress_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.dstAddress_ = dstAddress_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.srcPort_ = srcPort_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.dstPort_ = dstPort_; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.startMplsLabel_ = startMplsLabel_; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.endMplsLabel_ = endMplsLabel_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.tcpFlags_ = tcpFlags_; + } } @java.lang.Override @@ -1062,10 +1036,12 @@ public final class Acl { } if (!other.getSrcAddress().isEmpty()) { srcAddress_ = other.srcAddress_; + bitField0_ |= 0x00000004; onChanged(); } if (!other.getDstAddress().isEmpty()) { dstAddress_ = other.dstAddress_; + bitField0_ |= 0x00000008; onChanged(); } if (other.getSrcPort() != 0) { @@ -1080,7 +1056,12 @@ public final class Acl { if (other.getEndMplsLabel() != 0) { setEndMplsLabel(other.getEndMplsLabel()); } - this.mergeUnknownFields(other.unknownFields); + if (!other.getTcpFlags().isEmpty()) { + tcpFlags_ = other.tcpFlags_; + bitField0_ |= 0x00000100; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1092,20 +1073,103 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclMatch parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + dscp_ = input.readUInt32(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 16: + { + protocol_ = input.readUInt32(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + case 26: + { + srcAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + dstAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 40: + { + srcPort_ = input.readUInt32(); + bitField0_ |= 0x00000010; + break; + } + // case 40 + case 48: + { + dstPort_ = input.readUInt32(); + bitField0_ |= 0x00000020; + break; + } + // case 48 + case 56: + { + startMplsLabel_ = input.readUInt32(); + bitField0_ |= 0x00000040; + break; + } + // case 56 + case 64: + { + endMplsLabel_ = input.readUInt32(); + bitField0_ |= 0x00000080; + break; + } + // case 64 + case 74: + { + tcpFlags_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000100; + break; + } + // case 74 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclMatch) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int dscp_; /** @@ -1124,6 +1188,7 @@ public final class Acl { */ public Builder setDscp(int value) { dscp_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -1133,6 +1198,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearDscp() { + bitField0_ = (bitField0_ & ~0x00000001); dscp_ = 0; onChanged(); return this; @@ -1156,6 +1222,7 @@ public final class Acl { */ public Builder setProtocol(int value) { protocol_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1165,6 +1232,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearProtocol() { + bitField0_ = (bitField0_ & ~0x00000002); protocol_ = 0; onChanged(); return this; @@ -1213,6 +1281,7 @@ public final class Acl { throw new NullPointerException(); } srcAddress_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -1223,6 +1292,7 @@ public final class Acl { */ public Builder clearSrcAddress() { srcAddress_ = getDefaultInstance().getSrcAddress(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -1238,6 +1308,7 @@ public final class Acl { } checkByteStringIsUtf8(value); srcAddress_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -1285,6 +1356,7 @@ public final class Acl { throw new NullPointerException(); } dstAddress_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1295,6 +1367,7 @@ public final class Acl { */ public Builder clearDstAddress() { dstAddress_ = getDefaultInstance().getDstAddress(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } @@ -1310,6 +1383,7 @@ public final class Acl { } checkByteStringIsUtf8(value); dstAddress_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1332,6 +1406,7 @@ public final class Acl { */ public Builder setSrcPort(int value) { srcPort_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1341,6 +1416,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearSrcPort() { + bitField0_ = (bitField0_ & ~0x00000010); srcPort_ = 0; onChanged(); return this; @@ -1364,6 +1440,7 @@ public final class Acl { */ public Builder setDstPort(int value) { dstPort_ = value; + bitField0_ |= 0x00000020; onChanged(); return this; } @@ -1373,6 +1450,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearDstPort() { + bitField0_ = (bitField0_ & ~0x00000020); dstPort_ = 0; onChanged(); return this; @@ -1396,6 +1474,7 @@ public final class Acl { */ public Builder setStartMplsLabel(int value) { startMplsLabel_ = value; + bitField0_ |= 0x00000040; onChanged(); return this; } @@ -1405,6 +1484,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearStartMplsLabel() { + bitField0_ = (bitField0_ & ~0x00000040); startMplsLabel_ = 0; onChanged(); return this; @@ -1428,6 +1508,7 @@ public final class Acl { */ public Builder setEndMplsLabel(int value) { endMplsLabel_ = value; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -1437,11 +1518,87 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearEndMplsLabel() { + bitField0_ = (bitField0_ & ~0x00000080); endMplsLabel_ = 0; onChanged(); return this; } + private java.lang.Object tcpFlags_ = ""; + + /** + * string tcp_flags = 9; + * @return The tcpFlags. + */ + public java.lang.String getTcpFlags() { + java.lang.Object ref = tcpFlags_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tcpFlags_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * string tcp_flags = 9; + * @return The bytes for tcpFlags. + */ + public com.google.protobuf.ByteString getTcpFlagsBytes() { + java.lang.Object ref = tcpFlags_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + tcpFlags_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string tcp_flags = 9; + * @param value The tcpFlags to set. + * @return This builder for chaining. + */ + public Builder setTcpFlags(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + tcpFlags_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + /** + * string tcp_flags = 9; + * @return This builder for chaining. + */ + public Builder clearTcpFlags() { + tcpFlags_ = getDefaultInstance().getTcpFlags(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + return this; + } + + /** + * string tcp_flags = 9; + * @param value The bytes for tcpFlags to set. + * @return This builder for chaining. + */ + public Builder setTcpFlagsBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + tcpFlags_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -1469,7 +1626,17 @@ public final class Acl { @java.lang.Override public AclMatch parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclMatch(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -1540,56 +1707,6 @@ public final class Acl { return new AclAction(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - int rawValue = input.readEnum(); - forwardAction_ = rawValue; - break; - } - case 16: - { - int rawValue = input.readEnum(); - logAction_ = rawValue; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclAction_descriptor; } @@ -1601,7 +1718,7 @@ public final class Acl { public static final int FORWARD_ACTION_FIELD_NUMBER = 1; - private int forwardAction_; + private int forwardAction_ = 0; /** * .acl.AclForwardActionEnum forward_action = 1; @@ -1618,14 +1735,13 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclForwardActionEnum getForwardAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_); + acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_); return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result; } public static final int LOG_ACTION_FIELD_NUMBER = 2; - private int logAction_; + private int logAction_ = 0; /** * .acl.AclLogActionEnum log_action = 2; @@ -1642,8 +1758,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclLogActionEnum getLogAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_); + acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_); return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result; } @@ -1668,7 +1783,7 @@ public final class Acl { if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) { output.writeEnum(2, logAction_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1683,7 +1798,7 @@ public final class Acl { if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1701,7 +1816,7 @@ public final class Acl { return false; if (logAction_ != other.logAction_) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1717,7 +1832,7 @@ public final class Acl { hash = (53 * hash) + forwardAction_; hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER; hash = (53 * hash) + logAction_; - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -1811,22 +1926,16 @@ public final class Acl { // Construct using acl.Acl.AclAction.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; forwardAction_ = 0; logAction_ = 0; return this; @@ -1854,40 +1963,21 @@ public final class Acl { @java.lang.Override public acl.Acl.AclAction buildPartial() { acl.Acl.AclAction result = new acl.Acl.AclAction(this); - result.forwardAction_ = forwardAction_; - result.logAction_ = logAction_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclAction result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.forwardAction_ = forwardAction_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.logAction_ = logAction_; + } } @java.lang.Override @@ -1909,7 +1999,7 @@ public final class Acl { if (other.logAction_ != 0) { setLogActionValue(other.getLogActionValue()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1921,20 +2011,54 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclAction parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + forwardAction_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 16: + { + logAction_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclAction) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int forwardAction_ = 0; /** @@ -1953,6 +2077,7 @@ public final class Acl { */ public Builder setForwardActionValue(int value) { forwardAction_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -1963,8 +2088,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclForwardActionEnum getForwardAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_); + acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_); return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result; } @@ -1977,6 +2101,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000001; forwardAction_ = value.getNumber(); onChanged(); return this; @@ -1987,6 +2112,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearForwardAction() { + bitField0_ = (bitField0_ & ~0x00000001); forwardAction_ = 0; onChanged(); return this; @@ -2010,6 +2136,7 @@ public final class Acl { */ public Builder setLogActionValue(int value) { logAction_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2020,8 +2147,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclLogActionEnum getLogAction() { - @SuppressWarnings("deprecation") - acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_); + acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_); return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result; } @@ -2034,6 +2160,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; logAction_ = value.getNumber(); onChanged(); return this; @@ -2044,6 +2171,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearLogAction() { + bitField0_ = (bitField0_ & ~0x00000002); logAction_ = 0; onChanged(); return this; @@ -2076,7 +2204,17 @@ public final class Acl { @java.lang.Override public AclAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclAction(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2174,81 +2312,6 @@ public final class Acl { return new AclEntry(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclEntry(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 8: - { - sequenceId_ = input.readUInt32(); - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - description_ = s; - break; - } - case 26: - { - acl.Acl.AclMatch.Builder subBuilder = null; - if (match_ != null) { - subBuilder = match_.toBuilder(); - } - match_ = input.readMessage(acl.Acl.AclMatch.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(match_); - match_ = subBuilder.buildPartial(); - } - break; - } - case 34: - { - acl.Acl.AclAction.Builder subBuilder = null; - if (action_ != null) { - subBuilder = action_.toBuilder(); - } - action_ = input.readMessage(acl.Acl.AclAction.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(action_); - action_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclEntry_descriptor; } @@ -2260,7 +2323,7 @@ public final class Acl { public static final int SEQUENCE_ID_FIELD_NUMBER = 1; - private int sequenceId_; + private int sequenceId_ = 0; /** * uint32 sequence_id = 1; @@ -2273,7 +2336,8 @@ public final class Acl { public static final int DESCRIPTION_FIELD_NUMBER = 2; - private volatile java.lang.Object description_; + @SuppressWarnings("serial") + private volatile java.lang.Object description_ = ""; /** * string description = 2; @@ -2335,7 +2399,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() { - return getMatch(); + return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_; } public static final int ACTION_FIELD_NUMBER = 4; @@ -2365,7 +2429,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclActionOrBuilder getActionOrBuilder() { - return getAction(); + return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_; } private byte memoizedIsInitialized = -1; @@ -2386,7 +2450,7 @@ public final class Acl { if (sequenceId_ != 0) { output.writeUInt32(1, sequenceId_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_); } if (match_ != null) { @@ -2395,7 +2459,7 @@ public final class Acl { if (action_ != null) { output.writeMessage(4, getAction()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2407,7 +2471,7 @@ public final class Acl { if (sequenceId_ != 0) { size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_); } if (match_ != null) { @@ -2416,7 +2480,7 @@ public final class Acl { if (action_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2446,7 +2510,7 @@ public final class Acl { if (!getAction().equals(other.getAction())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2470,7 +2534,7 @@ public final class Acl { hash = (37 * hash) + ACTION_FIELD_NUMBER; hash = (53 * hash) + getAction().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2564,34 +2628,26 @@ public final class Acl { // Construct using acl.Acl.AclEntry.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; sequenceId_ = 0; description_ = ""; - if (matchBuilder_ == null) { - match_ = null; - } else { - match_ = null; + match_ = null; + if (matchBuilder_ != null) { + matchBuilder_.dispose(); matchBuilder_ = null; } - if (actionBuilder_ == null) { - action_ = null; - } else { - action_ = null; + action_ = null; + if (actionBuilder_ != null) { + actionBuilder_.dispose(); actionBuilder_ = null; } return this; @@ -2619,50 +2675,27 @@ public final class Acl { @java.lang.Override public acl.Acl.AclEntry buildPartial() { acl.Acl.AclEntry result = new acl.Acl.AclEntry(this); - result.sequenceId_ = sequenceId_; - result.description_ = description_; - if (matchBuilder_ == null) { - result.match_ = match_; - } else { - result.match_ = matchBuilder_.build(); - } - if (actionBuilder_ == null) { - result.action_ = action_; - } else { - result.action_ = actionBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.sequenceId_ = sequenceId_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.description_ = description_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build(); + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build(); + } } @java.lang.Override @@ -2683,6 +2716,7 @@ public final class Acl { } if (!other.getDescription().isEmpty()) { description_ = other.description_; + bitField0_ |= 0x00000002; onChanged(); } if (other.hasMatch()) { @@ -2691,7 +2725,7 @@ public final class Acl { if (other.hasAction()) { mergeAction(other.getAction()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2703,20 +2737,68 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclEntry parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 8: + { + sequenceId_ = input.readUInt32(); + bitField0_ |= 0x00000001; + break; + } + // case 8 + case 18: + { + description_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } + // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclEntry) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private int sequenceId_; /** @@ -2735,6 +2817,7 @@ public final class Acl { */ public Builder setSequenceId(int value) { sequenceId_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2744,6 +2827,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearSequenceId() { + bitField0_ = (bitField0_ & ~0x00000001); sequenceId_ = 0; onChanged(); return this; @@ -2792,6 +2876,7 @@ public final class Acl { throw new NullPointerException(); } description_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2802,6 +2887,7 @@ public final class Acl { */ public Builder clearDescription() { description_ = getDefaultInstance().getDescription(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -2817,6 +2903,7 @@ public final class Acl { } checkByteStringIsUtf8(value); description_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -2830,7 +2917,7 @@ public final class Acl { * @return Whether the match field is set. */ public boolean hasMatch() { - return matchBuilder_ != null || match_ != null; + return ((bitField0_ & 0x00000004) != 0); } /** @@ -2854,10 +2941,11 @@ public final class Acl { throw new NullPointerException(); } match_ = value; - onChanged(); } else { matchBuilder_.setMessage(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2867,10 +2955,11 @@ public final class Acl { public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) { if (matchBuilder_ == null) { match_ = builderForValue.build(); - onChanged(); } else { matchBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2879,15 +2968,16 @@ public final class Acl { */ public Builder mergeMatch(acl.Acl.AclMatch value) { if (matchBuilder_ == null) { - if (match_ != null) { - match_ = acl.Acl.AclMatch.newBuilder(match_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) { + getMatchBuilder().mergeFrom(value); } else { match_ = value; } - onChanged(); } else { matchBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000004; + onChanged(); return this; } @@ -2895,13 +2985,13 @@ public final class Acl { * .acl.AclMatch match = 3; */ public Builder clearMatch() { - if (matchBuilder_ == null) { - match_ = null; - onChanged(); - } else { - match_ = null; + bitField0_ = (bitField0_ & ~0x00000004); + match_ = null; + if (matchBuilder_ != null) { + matchBuilder_.dispose(); matchBuilder_ = null; } + onChanged(); return this; } @@ -2909,6 +2999,7 @@ public final class Acl { * .acl.AclMatch match = 3; */ public acl.Acl.AclMatch.Builder getMatchBuilder() { + bitField0_ |= 0x00000004; onChanged(); return getMatchFieldBuilder().getBuilder(); } @@ -2944,7 +3035,7 @@ public final class Acl { * @return Whether the action field is set. */ public boolean hasAction() { - return actionBuilder_ != null || action_ != null; + return ((bitField0_ & 0x00000008) != 0); } /** @@ -2968,10 +3059,11 @@ public final class Acl { throw new NullPointerException(); } action_ = value; - onChanged(); } else { actionBuilder_.setMessage(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -2981,10 +3073,11 @@ public final class Acl { public Builder setAction(acl.Acl.AclAction.Builder builderForValue) { if (actionBuilder_ == null) { action_ = builderForValue.build(); - onChanged(); } else { actionBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -2993,15 +3086,16 @@ public final class Acl { */ public Builder mergeAction(acl.Acl.AclAction value) { if (actionBuilder_ == null) { - if (action_ != null) { - action_ = acl.Acl.AclAction.newBuilder(action_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) { + getActionBuilder().mergeFrom(value); } else { action_ = value; } - onChanged(); } else { actionBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -3009,13 +3103,13 @@ public final class Acl { * .acl.AclAction action = 4; */ public Builder clearAction() { - if (actionBuilder_ == null) { - action_ = null; - onChanged(); - } else { - action_ = null; + bitField0_ = (bitField0_ & ~0x00000008); + action_ = null; + if (actionBuilder_ != null) { + actionBuilder_.dispose(); actionBuilder_ = null; } + onChanged(); return this; } @@ -3023,6 +3117,7 @@ public final class Acl { * .acl.AclAction action = 4; */ public acl.Acl.AclAction.Builder getActionBuilder() { + bitField0_ |= 0x00000008; onChanged(); return getActionFieldBuilder().getBuilder(); } @@ -3076,7 +3171,17 @@ public final class Acl { @java.lang.Override public AclEntry parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclEntry(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -3199,81 +3304,6 @@ public final class Acl { return new AclRuleSet(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AclRuleSet(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 16: - { - int rawValue = input.readEnum(); - type_ = rawValue; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - description_ = s; - break; - } - case 34: - { - java.lang.String s = input.readStringRequireUtf8(); - userId_ = s; - break; - } - case 42: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - entries_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - entries_.add(input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - entries_ = java.util.Collections.unmodifiableList(entries_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return acl.Acl.internal_static_acl_AclRuleSet_descriptor; } @@ -3285,7 +3315,8 @@ public final class Acl { public static final int NAME_FIELD_NUMBER = 1; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 1; @@ -3322,7 +3353,7 @@ public final class Acl { public static final int TYPE_FIELD_NUMBER = 2; - private int type_; + private int type_ = 0; /** * .acl.AclRuleTypeEnum type = 2; @@ -3339,14 +3370,14 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclRuleTypeEnum getType() { - @SuppressWarnings("deprecation") - acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_); + acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_); return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result; } public static final int DESCRIPTION_FIELD_NUMBER = 3; - private volatile java.lang.Object description_; + @SuppressWarnings("serial") + private volatile java.lang.Object description_ = ""; /** * string description = 3; @@ -3383,7 +3414,8 @@ public final class Acl { public static final int USER_ID_FIELD_NUMBER = 4; - private volatile java.lang.Object userId_; + @SuppressWarnings("serial") + private volatile java.lang.Object userId_ = ""; /** * string user_id = 4; @@ -3420,6 +3452,7 @@ public final class Acl { public static final int ENTRIES_FIELD_NUMBER = 5; + @SuppressWarnings("serial") private java.util.List entries_; /** @@ -3477,22 +3510,22 @@ public final class Acl { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) { output.writeEnum(2, type_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_); } - if (!getUserIdBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_); } for (int i = 0; i < entries_.size(); i++) { output.writeMessage(5, entries_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -3501,22 +3534,22 @@ public final class Acl { if (size != -1) return size; size = 0; - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); } if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_); } - if (!getDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_); } - if (!getUserIdBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_); } for (int i = 0; i < entries_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -3540,7 +3573,7 @@ public final class Acl { return false; if (!getEntriesList().equals(other.getEntriesList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3564,7 +3597,7 @@ public final class Acl { hash = (37 * hash) + ENTRIES_FIELD_NUMBER; hash = (53 * hash) + getEntriesList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3658,33 +3691,27 @@ public final class Acl { // Construct using acl.Acl.AclRuleSet.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getEntriesFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; name_ = ""; type_ = 0; description_ = ""; userId_ = ""; if (entriesBuilder_ == null) { entries_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + entries_ = null; entriesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -3710,52 +3737,40 @@ public final class Acl { @java.lang.Override public acl.Acl.AclRuleSet buildPartial() { acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this); - int from_bitField0_ = bitField0_; - result.name_ = name_; - result.type_ = type_; - result.description_ = description_; - result.userId_ = userId_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) { if (entriesBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { entries_ = java.util.Collections.unmodifiableList(entries_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); } result.entries_ = entries_; } else { result.entries_ = entriesBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); } - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(acl.Acl.AclRuleSet result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = type_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.description_ = description_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.userId_ = userId_; + } } @java.lang.Override @@ -3773,6 +3788,7 @@ public final class Acl { return this; if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000001; onChanged(); } if (other.type_ != 0) { @@ -3780,17 +3796,19 @@ public final class Acl { } if (!other.getDescription().isEmpty()) { description_ = other.description_; + bitField0_ |= 0x00000004; onChanged(); } if (!other.getUserId().isEmpty()) { userId_ = other.userId_; + bitField0_ |= 0x00000008; onChanged(); } if (entriesBuilder_ == null) { if (!other.entries_.isEmpty()) { if (entries_.isEmpty()) { entries_ = other.entries_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureEntriesIsMutable(); entries_.addAll(other.entries_); @@ -3803,14 +3821,14 @@ public final class Acl { entriesBuilder_.dispose(); entriesBuilder_ = null; entries_ = other.entries_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null; } else { entriesBuilder_.addAllMessages(other.entries_); } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3822,17 +3840,75 @@ public final class Acl { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - acl.Acl.AclRuleSet parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + type_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + case 26: + { + description_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + userId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 42: + { + acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry); + if (entriesBuilder_ == null) { + ensureEntriesIsMutable(); + entries_.add(m); + } else { + entriesBuilder_.addMessage(m); + } + break; + } + // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (acl.Acl.AclRuleSet) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -3881,6 +3957,7 @@ public final class Acl { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -3891,6 +3968,7 @@ public final class Acl { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } @@ -3906,6 +3984,7 @@ public final class Acl { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -3928,6 +4007,7 @@ public final class Acl { */ public Builder setTypeValue(int value) { type_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -3938,8 +4018,7 @@ public final class Acl { */ @java.lang.Override public acl.Acl.AclRuleTypeEnum getType() { - @SuppressWarnings("deprecation") - acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_); + acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_); return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result; } @@ -3952,6 +4031,7 @@ public final class Acl { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; type_ = value.getNumber(); onChanged(); return this; @@ -3962,6 +4042,7 @@ public final class Acl { * @return This builder for chaining. */ public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); type_ = 0; onChanged(); return this; @@ -4010,6 +4091,7 @@ public final class Acl { throw new NullPointerException(); } description_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -4020,6 +4102,7 @@ public final class Acl { */ public Builder clearDescription() { description_ = getDefaultInstance().getDescription(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -4035,6 +4118,7 @@ public final class Acl { } checkByteStringIsUtf8(value); description_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -4082,6 +4166,7 @@ public final class Acl { throw new NullPointerException(); } userId_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -4092,6 +4177,7 @@ public final class Acl { */ public Builder clearUserId() { userId_ = getDefaultInstance().getUserId(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } @@ -4107,6 +4193,7 @@ public final class Acl { } checkByteStringIsUtf8(value); userId_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -4114,9 +4201,9 @@ public final class Acl { private java.util.List entries_ = java.util.Collections.emptyList(); private void ensureEntriesIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000010) != 0)) { entries_ = new java.util.ArrayList(entries_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000010; } } @@ -4268,7 +4355,7 @@ public final class Acl { public Builder clearEntries() { if (entriesBuilder_ == null) { entries_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); } else { entriesBuilder_.clear(); @@ -4342,7 +4429,7 @@ public final class Acl { private com.google.protobuf.RepeatedFieldBuilderV3 getEntriesFieldBuilder() { if (entriesBuilder_ == null) { - entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(entries_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); entries_ = null; } return entriesBuilder_; @@ -4375,7 +4462,17 @@ public final class Acl { @java.lang.Override public AclRuleSet parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AclRuleSet(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -4417,10 +4514,10 @@ public final class Acl { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\252\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\"i\n\tAclActi" + "on\0221\n\016forward_action\030\001 \001(\0162\031.acl.AclForw" + "ardActionEnum\022)\n\nlog_action\030\002 \001(\0162\025.acl." + "AclLogActionEnum\"r\n\010AclEntry\022\023\n\013sequence" + "_id\030\001 \001(\r\022\023\n\013description\030\002 \001(\t\022\034\n\005match\030" + "\003 \001(\0132\r.acl.AclMatch\022\036\n\006action\030\004 \001(\0132\016.a" + "cl.AclAction\"\204\001\n\nAclRuleSet\022\014\n\004name\030\001 \001(" + "\t\022\"\n\004type\030\002 \001(\0162\024.acl.AclRuleTypeEnum\022\023\n" + "\013description\030\003 \001(\t\022\017\n\007user_id\030\004 \001(\t\022\036\n\007e" + "ntries\030\005 \003(\0132\r.acl.AclEntry*\231\001\n\017AclRuleT" + "ypeEnum\022\031\n\025ACLRULETYPE_UNDEFINED\020\000\022\024\n\020AC" + "LRULETYPE_IPV4\020\001\022\024\n\020ACLRULETYPE_IPV6\020\002\022\022" + "\n\016ACLRULETYPE_L2\020\003\022\024\n\020ACLRULETYPE_MPLS\020\004" + "\022\025\n\021ACLRULETYPE_MIXED\020\005*\227\001\n\024AclForwardAc" + "tionEnum\022!\n\035ACLFORWARDINGACTION_UNDEFINE" + "D\020\000\022\034\n\030ACLFORWARDINGACTION_DROP\020\001\022\036\n\032ACL" + "FORWARDINGACTION_ACCEPT\020\002\022\036\n\032ACLFORWARDI" + "NGACTION_REJECT\020\003*_\n\020AclLogActionEnum\022\032\n" + "\026ACLLOGACTION_UNDEFINED\020\000\022\026\n\022ACLLOGACTIO" + "N_NOLOG\020\001\022\027\n\023ACLLOGACTION_SYSLOG\020\002b\006prot" + "o3" }; + java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\275\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\022\021\n\ttcp_fla" + "gs\030\t \001(\t\"i\n\tAclAction\0221\n\016forward_action\030" + "\001 \001(\0162\031.acl.AclForwardActionEnum\022)\n\nlog_" + "action\030\002 \001(\0162\025.acl.AclLogActionEnum\"r\n\010A" + "clEntry\022\023\n\013sequence_id\030\001 \001(\r\022\023\n\013descript" + "ion\030\002 \001(\t\022\034\n\005match\030\003 \001(\0132\r.acl.AclMatch\022" + "\036\n\006action\030\004 \001(\0132\016.acl.AclAction\"\204\001\n\nAclR" + "uleSet\022\014\n\004name\030\001 \001(\t\022\"\n\004type\030\002 \001(\0162\024.acl" + ".AclRuleTypeEnum\022\023\n\013description\030\003 \001(\t\022\017\n" + "\007user_id\030\004 \001(\t\022\036\n\007entries\030\005 \003(\0132\r.acl.Ac" + "lEntry*\231\001\n\017AclRuleTypeEnum\022\031\n\025ACLRULETYP" + "E_UNDEFINED\020\000\022\024\n\020ACLRULETYPE_IPV4\020\001\022\024\n\020A" + "CLRULETYPE_IPV6\020\002\022\022\n\016ACLRULETYPE_L2\020\003\022\024\n" + "\020ACLRULETYPE_MPLS\020\004\022\025\n\021ACLRULETYPE_MIXED" + "\020\005*\227\001\n\024AclForwardActionEnum\022!\n\035ACLFORWAR" + "DINGACTION_UNDEFINED\020\000\022\034\n\030ACLFORWARDINGA" + "CTION_DROP\020\001\022\036\n\032ACLFORWARDINGACTION_ACCE" + "PT\020\002\022\036\n\032ACLFORWARDINGACTION_REJECT\020\003*_\n\020" + "AclLogActionEnum\022\032\n\026ACLLOGACTION_UNDEFIN" + "ED\020\000\022\026\n\022ACLLOGACTION_NOLOG\020\001\022\027\n\023ACLLOGAC" + "TION_SYSLOG\020\002b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {}); internal_static_acl_AclMatch_descriptor = getDescriptor().getMessageTypes().get(0); - internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel" }); + internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel", "TcpFlags" }); internal_static_acl_AclAction_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_acl_AclAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclAction_descriptor, new java.lang.String[] { "ForwardAction", "LogAction" }); internal_static_acl_AclEntry_descriptor = getDescriptor().getMessageTypes().get(2); diff --git a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java index 459377049..9414c346d 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java @@ -195,6 +195,10 @@ public final class ContextOuterClass { * DEVICEDRIVER_OC = 11; */ DEVICEDRIVER_OC(11), + /** + * DEVICEDRIVER_QKD = 12; + */ + DEVICEDRIVER_QKD(12), UNRECOGNIZED(-1); /** @@ -261,6 +265,11 @@ public final class ContextOuterClass { */ public static final int DEVICEDRIVER_OC_VALUE = 11; + /** + * DEVICEDRIVER_QKD = 12; + */ + public static final int DEVICEDRIVER_QKD_VALUE = 12; + public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); @@ -308,6 +317,8 @@ public final class ContextOuterClass { return DEVICEDRIVER_IETF_ACTN; case 11: return DEVICEDRIVER_OC; + case 12: + return DEVICEDRIVER_QKD; default: return null; } @@ -471,6 +482,141 @@ public final class ContextOuterClass { } } + /** + * Protobuf enum {@code context.LinkTypeEnum} + */ + public enum LinkTypeEnum implements com.google.protobuf.ProtocolMessageEnum { + + /** + * LINKTYPE_UNKNOWN = 0; + */ + LINKTYPE_UNKNOWN(0), + /** + * LINKTYPE_COPPER = 1; + */ + LINKTYPE_COPPER(1), + /** + * LINKTYPE_VIRTUAL_COPPER = 2; + */ + LINKTYPE_VIRTUAL_COPPER(2), + /** + * LINKTYPE_OPTICAL = 3; + */ + LINKTYPE_OPTICAL(3), + /** + * LINKTYPE_VIRTUAL_OPTICAL = 4; + */ + LINKTYPE_VIRTUAL_OPTICAL(4), + UNRECOGNIZED(-1); + + /** + * LINKTYPE_UNKNOWN = 0; + */ + public static final int LINKTYPE_UNKNOWN_VALUE = 0; + + /** + * LINKTYPE_COPPER = 1; + */ + public static final int LINKTYPE_COPPER_VALUE = 1; + + /** + * LINKTYPE_VIRTUAL_COPPER = 2; + */ + public static final int LINKTYPE_VIRTUAL_COPPER_VALUE = 2; + + /** + * LINKTYPE_OPTICAL = 3; + */ + public static final int LINKTYPE_OPTICAL_VALUE = 3; + + /** + * LINKTYPE_VIRTUAL_OPTICAL = 4; + */ + public static final int LINKTYPE_VIRTUAL_OPTICAL_VALUE = 4; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static LinkTypeEnum valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static LinkTypeEnum forNumber(int value) { + switch(value) { + case 0: + return LINKTYPE_UNKNOWN; + case 1: + return LINKTYPE_COPPER; + case 2: + return LINKTYPE_VIRTUAL_COPPER; + case 3: + return LINKTYPE_OPTICAL; + case 4: + return LINKTYPE_VIRTUAL_OPTICAL; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { + + public LinkTypeEnum findValueByNumber(int number) { + return LinkTypeEnum.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3); + } + + private static final LinkTypeEnum[] VALUES = values(); + + public static LinkTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private LinkTypeEnum(int value) { + this.value = value; + } + } + /** * Protobuf enum {@code context.ServiceTypeEnum} */ @@ -504,6 +650,10 @@ public final class ContextOuterClass { * SERVICETYPE_OPTICAL_CONNECTIVITY = 6; */ SERVICETYPE_OPTICAL_CONNECTIVITY(6), + /** + * SERVICETYPE_QKD = 7; + */ + SERVICETYPE_QKD(7), UNRECOGNIZED(-1); /** @@ -541,6 +691,11 @@ public final class ContextOuterClass { */ public static final int SERVICETYPE_OPTICAL_CONNECTIVITY_VALUE = 6; + /** + * SERVICETYPE_QKD = 7; + */ + public static final int SERVICETYPE_QKD_VALUE = 7; + public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); @@ -578,6 +733,8 @@ public final class ContextOuterClass { return SERVICETYPE_E2E; case 6: return SERVICETYPE_OPTICAL_CONNECTIVITY; + case 7: + return SERVICETYPE_QKD; default: return null; } @@ -606,7 +763,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4); } private static final ServiceTypeEnum[] VALUES = values(); @@ -752,7 +909,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5); } private static final ServiceStatusEnum[] VALUES = values(); @@ -898,7 +1055,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6); } private static final SliceStatusEnum[] VALUES = values(); @@ -1015,7 +1172,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7); } private static final ConfigActionEnum[] VALUES = values(); @@ -1132,7 +1289,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8); } private static final ConstraintActionEnum[] VALUES = values(); @@ -1311,7 +1468,7 @@ public final class ContextOuterClass { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8); + return context.ContextOuterClass.getDescriptor().getEnumTypes().get(9); } private static final IsolationLevelEnum[] VALUES = values(); @@ -1363,44 +1520,6 @@ public final class ContextOuterClass { return new Empty(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Empty(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Empty_descriptor; } @@ -1425,7 +1544,7 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1434,7 +1553,7 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1448,7 +1567,7 @@ public final class ContextOuterClass { return super.equals(obj); } context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1460,7 +1579,7 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -1558,17 +1677,10 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Empty.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override @@ -1603,36 +1715,6 @@ public final class ContextOuterClass { return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof context.ContextOuterClass.Empty) { @@ -1646,7 +1728,7 @@ public final class ContextOuterClass { public Builder mergeFrom(context.ContextOuterClass.Empty other) { if (other == context.ContextOuterClass.Empty.getDefaultInstance()) return this; - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1658,17 +1740,35 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Empty parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -1699,7 +1799,17 @@ public final class ContextOuterClass { @java.lang.Override public Empty parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Empty(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -1757,50 +1867,6 @@ public final class ContextOuterClass { return new Uuid(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Uuid(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - uuid_ = s; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Uuid_descriptor; } @@ -1812,7 +1878,8 @@ public final class ContextOuterClass { public static final int UUID_FIELD_NUMBER = 1; - private volatile java.lang.Object uuid_; + @SuppressWarnings("serial") + private volatile java.lang.Object uuid_ = ""; /** * string uuid = 1; @@ -1862,10 +1929,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getUuidBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -1874,10 +1941,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!getUuidBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -1893,7 +1960,7 @@ public final class ContextOuterClass { context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj; if (!getUuid().equals(other.getUuid())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1907,7 +1974,7 @@ public final class ContextOuterClass { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + UUID_FIELD_NUMBER; hash = (53 * hash) + getUuid().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2001,22 +2068,16 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Uuid.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; uuid_ = ""; return this; } @@ -2043,39 +2104,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Uuid buildPartial() { context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this); - result.uuid_ = uuid_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Uuid result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.uuid_ = uuid_; + } } @java.lang.Override @@ -2093,9 +2133,10 @@ public final class ContextOuterClass { return this; if (!other.getUuid().isEmpty()) { uuid_ = other.uuid_; + bitField0_ |= 0x00000001; onChanged(); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2107,20 +2148,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Uuid parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + uuid_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private java.lang.Object uuid_ = ""; /** @@ -2164,6 +2232,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } uuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2174,6 +2243,7 @@ public final class ContextOuterClass { */ public Builder clearUuid() { uuid_ = getDefaultInstance().getUuid(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } @@ -2189,6 +2259,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); uuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2220,7 +2291,17 @@ public final class ContextOuterClass { @java.lang.Override public Uuid parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Uuid(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2271,49 +2352,6 @@ public final class ContextOuterClass { return new Timestamp(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Timestamp(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 9: - { - timestamp_ = input.readDouble(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Timestamp_descriptor; } @@ -2325,7 +2363,7 @@ public final class ContextOuterClass { public static final int TIMESTAMP_FIELD_NUMBER = 1; - private double timestamp_; + private double timestamp_ = 0D; /** * double timestamp = 1; @@ -2351,10 +2389,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (timestamp_ != 0D) { + if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) { output.writeDouble(1, timestamp_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2363,10 +2401,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (timestamp_ != 0D) { + if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) { size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2382,7 +2420,7 @@ public final class ContextOuterClass { context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj; if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2396,7 +2434,7 @@ public final class ContextOuterClass { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp())); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -2490,22 +2528,16 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Timestamp.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; timestamp_ = 0D; return this; } @@ -2532,39 +2564,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Timestamp buildPartial() { context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this); - result.timestamp_ = timestamp_; + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Timestamp result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.timestamp_ = timestamp_; + } } @java.lang.Override @@ -2583,7 +2594,7 @@ public final class ContextOuterClass { if (other.getTimestamp() != 0D) { setTimestamp(other.getTimestamp()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -2595,20 +2606,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Timestamp parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 9: + { + timestamp_ = input.readDouble(); + bitField0_ |= 0x00000001; + break; + } + // case 9 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private double timestamp_; /** @@ -2627,6 +2665,7 @@ public final class ContextOuterClass { */ public Builder setTimestamp(double value) { timestamp_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -2636,6 +2675,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); timestamp_ = 0D; onChanged(); return this; @@ -2668,7 +2708,17 @@ public final class ContextOuterClass { @java.lang.Override public Timestamp parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Timestamp(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2743,63 +2793,6 @@ public final class ContextOuterClass { return new Event(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Event(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Timestamp.Builder subBuilder = null; - if (timestamp_ != null) { - subBuilder = timestamp_.toBuilder(); - } - timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(timestamp_); - timestamp_ = subBuilder.buildPartial(); - } - break; - } - case 16: - { - int rawValue = input.readEnum(); - eventType_ = rawValue; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Event_descriptor; } @@ -2836,12 +2829,12 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { - return getTimestamp(); + return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; } public static final int EVENT_TYPE_FIELD_NUMBER = 2; - private int eventType_; + private int eventType_ = 0; /** * .context.EventTypeEnum event_type = 2; @@ -2858,8 +2851,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_); + context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_); return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result; } @@ -2884,7 +2876,7 @@ public final class ContextOuterClass { if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) { output.writeEnum(2, eventType_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -2899,7 +2891,7 @@ public final class ContextOuterClass { if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -2921,7 +2913,7 @@ public final class ContextOuterClass { } if (eventType_ != other.eventType_) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2939,7 +2931,7 @@ public final class ContextOuterClass { } hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER; hash = (53 * hash) + eventType_; - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3033,26 +3025,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Event.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (timestampBuilder_ == null) { - timestamp_ = null; - } else { - timestamp_ = null; + bitField0_ = 0; + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); timestampBuilder_ = null; } eventType_ = 0; @@ -3081,44 +3066,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Event buildPartial() { context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this); - if (timestampBuilder_ == null) { - result.timestamp_ = timestamp_; - } else { - result.timestamp_ = timestampBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } - result.eventType_ = eventType_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Event result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.eventType_ = eventType_; + } } @java.lang.Override @@ -3140,7 +3102,7 @@ public final class ContextOuterClass { if (other.eventType_ != 0) { setEventTypeValue(other.getEventTypeValue()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3152,20 +3114,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Event parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + eventType_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Timestamp timestamp_; private com.google.protobuf.SingleFieldBuilderV3 timestampBuilder_; @@ -3175,7 +3171,7 @@ public final class ContextOuterClass { * @return Whether the timestamp field is set. */ public boolean hasTimestamp() { - return timestampBuilder_ != null || timestamp_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -3199,10 +3195,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } timestamp_ = value; - onChanged(); } else { timestampBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3212,10 +3209,11 @@ public final class ContextOuterClass { public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) { if (timestampBuilder_ == null) { timestamp_ = builderForValue.build(); - onChanged(); } else { timestampBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3224,15 +3222,16 @@ public final class ContextOuterClass { */ public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) { if (timestampBuilder_ == null) { - if (timestamp_ != null) { - timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) { + getTimestampBuilder().mergeFrom(value); } else { timestamp_ = value; } - onChanged(); } else { timestampBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3240,13 +3239,13 @@ public final class ContextOuterClass { * .context.Timestamp timestamp = 1; */ public Builder clearTimestamp() { - if (timestampBuilder_ == null) { - timestamp_ = null; - onChanged(); - } else { - timestamp_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); timestampBuilder_ = null; } + onChanged(); return this; } @@ -3254,6 +3253,7 @@ public final class ContextOuterClass { * .context.Timestamp timestamp = 1; */ public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTimestampFieldBuilder().getBuilder(); } @@ -3298,6 +3298,7 @@ public final class ContextOuterClass { */ public Builder setEventTypeValue(int value) { eventType_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -3308,8 +3309,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_); + context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_); return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result; } @@ -3322,6 +3322,7 @@ public final class ContextOuterClass { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000002; eventType_ = value.getNumber(); onChanged(); return this; @@ -3332,6 +3333,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearEventType() { + bitField0_ = (bitField0_ & ~0x00000002); eventType_ = 0; onChanged(); return this; @@ -3364,7 +3366,17 @@ public final class ContextOuterClass { @java.lang.Override public Event parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Event(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -3430,57 +3442,6 @@ public final class ContextOuterClass { return new ContextId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (contextUuid_ != null) { - subBuilder = contextUuid_.toBuilder(); - } - contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextUuid_); - contextUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextId_descriptor; } @@ -3517,7 +3478,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() { - return getContextUuid(); + return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_; } private byte memoizedIsInitialized = -1; @@ -3538,7 +3499,7 @@ public final class ContextOuterClass { if (contextUuid_ != null) { output.writeMessage(1, getContextUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -3550,7 +3511,7 @@ public final class ContextOuterClass { if (contextUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -3570,7 +3531,7 @@ public final class ContextOuterClass { if (!getContextUuid().equals(other.getContextUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3586,7 +3547,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER; hash = (53 * hash) + getContextUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -3684,26 +3645,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextUuidBuilder_ == null) { - contextUuid_ = null; - } else { - contextUuid_ = null; + bitField0_ = 0; + contextUuid_ = null; + if (contextUuidBuilder_ != null) { + contextUuidBuilder_.dispose(); contextUuidBuilder_ = null; } return this; @@ -3731,43 +3685,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextId buildPartial() { context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this); - if (contextUuidBuilder_ == null) { - result.contextUuid_ = contextUuid_; - } else { - result.contextUuid_ = contextUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build(); + } } @java.lang.Override @@ -3786,7 +3715,7 @@ public final class ContextOuterClass { if (other.hasContextUuid()) { mergeContextUuid(other.getContextUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -3798,20 +3727,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Uuid contextUuid_; private com.google.protobuf.SingleFieldBuilderV3 contextUuidBuilder_; @@ -3821,7 +3777,7 @@ public final class ContextOuterClass { * @return Whether the contextUuid field is set. */ public boolean hasContextUuid() { - return contextUuidBuilder_ != null || contextUuid_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -3845,10 +3801,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextUuid_ = value; - onChanged(); } else { contextUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3858,10 +3815,11 @@ public final class ContextOuterClass { public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (contextUuidBuilder_ == null) { contextUuid_ = builderForValue.build(); - onChanged(); } else { contextUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3870,15 +3828,16 @@ public final class ContextOuterClass { */ public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) { if (contextUuidBuilder_ == null) { - if (contextUuid_ != null) { - contextUuid_ = context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getContextUuidBuilder().mergeFrom(value); } else { contextUuid_ = value; } - onChanged(); } else { contextUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -3886,13 +3845,13 @@ public final class ContextOuterClass { * .context.Uuid context_uuid = 1; */ public Builder clearContextUuid() { - if (contextUuidBuilder_ == null) { - contextUuid_ = null; - onChanged(); - } else { - contextUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextUuid_ = null; + if (contextUuidBuilder_ != null) { + contextUuidBuilder_.dispose(); contextUuidBuilder_ = null; } + onChanged(); return this; } @@ -3900,6 +3859,7 @@ public final class ContextOuterClass { * .context.Uuid context_uuid = 1; */ public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextUuidFieldBuilder().getBuilder(); } @@ -3953,7 +3913,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -4123,113 +4093,6 @@ public final class ContextOuterClass { return new Context(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Context(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - serviceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry)); - break; - } - case 42: - { - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - sliceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry)); - break; - } - case 50: - { - context.ContextOuterClass.TeraFlowController.Builder subBuilder = null; - if (controller_ != null) { - subBuilder = controller_.toBuilder(); - } - controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(controller_); - controller_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_); - } - if (((mutable_bitField0_ & 0x00000004) != 0)) { - sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Context_descriptor; } @@ -4266,12 +4129,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -4308,6 +4172,7 @@ public final class ContextOuterClass { public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List topologyIds_; /** @@ -4352,6 +4217,7 @@ public final class ContextOuterClass { public static final int SERVICE_IDS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List serviceIds_; /** @@ -4396,6 +4262,7 @@ public final class ContextOuterClass { public static final int SLICE_IDS_FIELD_NUMBER = 5; + @SuppressWarnings("serial") private java.util.List sliceIds_; /** @@ -4465,7 +4332,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() { - return getController(); + return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_; } private byte memoizedIsInitialized = -1; @@ -4486,7 +4353,7 @@ public final class ContextOuterClass { if (contextId_ != null) { output.writeMessage(1, getContextId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < topologyIds_.size(); i++) { @@ -4501,7 +4368,7 @@ public final class ContextOuterClass { if (controller_ != null) { output.writeMessage(6, getController()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -4513,7 +4380,7 @@ public final class ContextOuterClass { if (contextId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < topologyIds_.size(); i++) { @@ -4528,7 +4395,7 @@ public final class ContextOuterClass { if (controller_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -4562,7 +4429,7 @@ public final class ContextOuterClass { if (!getController().equals(other.getController())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -4596,7 +4463,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTROLLER_FIELD_NUMBER; hash = (53 * hash) + getController().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -4690,54 +4557,46 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Context.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologyIdsFieldBuilder(); - getServiceIdsFieldBuilder(); - getSliceIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } name_ = ""; if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologyIds_ = null; topologyIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (serviceIdsBuilder_ == null) { serviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + serviceIds_ = null; serviceIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); if (sliceIdsBuilder_ == null) { sliceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); } else { + sliceIds_ = null; sliceIdsBuilder_.clear(); } - if (controllerBuilder_ == null) { - controller_ = null; - } else { - controller_ = null; + bitField0_ = (bitField0_ & ~0x00000010); + controller_ = null; + if (controllerBuilder_ != null) { + controllerBuilder_.dispose(); controllerBuilder_ = null; } return this; @@ -4765,77 +4624,55 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Context buildPartial() { context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this); - int from_bitField0_ = bitField0_; - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) { if (topologyIdsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.topologyIds_ = topologyIds_; } else { result.topologyIds_ = topologyIdsBuilder_.build(); } if (serviceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.serviceIds_ = serviceIds_; } else { result.serviceIds_ = serviceIdsBuilder_.build(); } if (sliceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } result.sliceIds_ = sliceIds_; } else { result.sliceIds_ = sliceIdsBuilder_.build(); } - if (controllerBuilder_ == null) { - result.controller_ = controller_; - } else { - result.controller_ = controllerBuilder_.build(); - } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Context result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build(); + } } @java.lang.Override @@ -4856,13 +4693,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (topologyIdsBuilder_ == null) { if (!other.topologyIds_.isEmpty()) { if (topologyIds_.isEmpty()) { topologyIds_ = other.topologyIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureTopologyIdsIsMutable(); topologyIds_.addAll(other.topologyIds_); @@ -4875,7 +4713,7 @@ public final class ContextOuterClass { topologyIdsBuilder_.dispose(); topologyIdsBuilder_ = null; topologyIds_ = other.topologyIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null; } else { topologyIdsBuilder_.addAllMessages(other.topologyIds_); @@ -4886,7 +4724,7 @@ public final class ContextOuterClass { if (!other.serviceIds_.isEmpty()) { if (serviceIds_.isEmpty()) { serviceIds_ = other.serviceIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureServiceIdsIsMutable(); serviceIds_.addAll(other.serviceIds_); @@ -4899,7 +4737,7 @@ public final class ContextOuterClass { serviceIdsBuilder_.dispose(); serviceIdsBuilder_ = null; serviceIds_ = other.serviceIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null; } else { serviceIdsBuilder_.addAllMessages(other.serviceIds_); @@ -4910,7 +4748,7 @@ public final class ContextOuterClass { if (!other.sliceIds_.isEmpty()) { if (sliceIds_.isEmpty()) { sliceIds_ = other.sliceIds_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureSliceIdsIsMutable(); sliceIds_.addAll(other.sliceIds_); @@ -4923,7 +4761,7 @@ public final class ContextOuterClass { sliceIdsBuilder_.dispose(); sliceIdsBuilder_ = null; sliceIds_ = other.sliceIds_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null; } else { sliceIdsBuilder_.addAllMessages(other.sliceIds_); @@ -4933,7 +4771,7 @@ public final class ContextOuterClass { if (other.hasController()) { mergeController(other.getController()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -4945,17 +4783,92 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Context parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); + if (topologyIdsBuilder_ == null) { + ensureTopologyIdsIsMutable(); + topologyIds_.add(m); + } else { + topologyIdsBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry); + if (serviceIdsBuilder_ == null) { + ensureServiceIdsIsMutable(); + serviceIds_.add(m); + } else { + serviceIdsBuilder_.addMessage(m); + } + break; + } + // case 34 + case 42: + { + context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry); + if (sliceIdsBuilder_ == null) { + ensureSliceIdsIsMutable(); + sliceIds_.add(m); + } else { + sliceIdsBuilder_.addMessage(m); + } + break; + } + // case 42 + case 50: + { + input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000020; + break; + } + // case 50 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -4970,7 +4883,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -4994,10 +4907,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5007,10 +4921,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5019,15 +4934,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -5035,13 +4951,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -5049,6 +4965,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -5118,6 +5035,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -5128,6 +5046,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -5143,6 +5062,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -5150,9 +5070,9 @@ public final class ContextOuterClass { private java.util.List topologyIds_ = java.util.Collections.emptyList(); private void ensureTopologyIdsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { topologyIds_ = new java.util.ArrayList(topologyIds_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -5304,7 +5224,7 @@ public final class ContextOuterClass { public Builder clearTopologyIds() { if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { topologyIdsBuilder_.clear(); @@ -5378,7 +5298,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getTopologyIdsFieldBuilder() { if (topologyIdsBuilder_ == null) { - topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); topologyIds_ = null; } return topologyIdsBuilder_; @@ -5387,9 +5307,9 @@ public final class ContextOuterClass { private java.util.List serviceIds_ = java.util.Collections.emptyList(); private void ensureServiceIdsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { serviceIds_ = new java.util.ArrayList(serviceIds_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -5541,7 +5461,7 @@ public final class ContextOuterClass { public Builder clearServiceIds() { if (serviceIdsBuilder_ == null) { serviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { serviceIdsBuilder_.clear(); @@ -5615,7 +5535,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getServiceIdsFieldBuilder() { if (serviceIdsBuilder_ == null) { - serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); serviceIds_ = null; } return serviceIdsBuilder_; @@ -5624,9 +5544,9 @@ public final class ContextOuterClass { private java.util.List sliceIds_ = java.util.Collections.emptyList(); private void ensureSliceIdsIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { + if (!((bitField0_ & 0x00000010) != 0)) { sliceIds_ = new java.util.ArrayList(sliceIds_); - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000010; } } @@ -5778,7 +5698,7 @@ public final class ContextOuterClass { public Builder clearSliceIds() { if (sliceIdsBuilder_ == null) { sliceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); } else { sliceIdsBuilder_.clear(); @@ -5852,7 +5772,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getSliceIdsFieldBuilder() { if (sliceIdsBuilder_ == null) { - sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); + sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); sliceIds_ = null; } return sliceIdsBuilder_; @@ -5867,7 +5787,7 @@ public final class ContextOuterClass { * @return Whether the controller field is set. */ public boolean hasController() { - return controllerBuilder_ != null || controller_ != null; + return ((bitField0_ & 0x00000020) != 0); } /** @@ -5891,10 +5811,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } controller_ = value; - onChanged(); } else { controllerBuilder_.setMessage(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5904,10 +5825,11 @@ public final class ContextOuterClass { public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) { if (controllerBuilder_ == null) { controller_ = builderForValue.build(); - onChanged(); } else { controllerBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5916,15 +5838,16 @@ public final class ContextOuterClass { */ public Builder mergeController(context.ContextOuterClass.TeraFlowController value) { if (controllerBuilder_ == null) { - if (controller_ != null) { - controller_ = context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) { + getControllerBuilder().mergeFrom(value); } else { controller_ = value; } - onChanged(); } else { controllerBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -5932,13 +5855,13 @@ public final class ContextOuterClass { * .context.TeraFlowController controller = 6; */ public Builder clearController() { - if (controllerBuilder_ == null) { - controller_ = null; - onChanged(); - } else { - controller_ = null; + bitField0_ = (bitField0_ & ~0x00000020); + controller_ = null; + if (controllerBuilder_ != null) { + controllerBuilder_.dispose(); controllerBuilder_ = null; } + onChanged(); return this; } @@ -5946,6 +5869,7 @@ public final class ContextOuterClass { * .context.TeraFlowController controller = 6; */ public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() { + bitField0_ |= 0x00000020; onChanged(); return getControllerFieldBuilder().getBuilder(); } @@ -5999,7 +5923,17 @@ public final class ContextOuterClass { @java.lang.Override public Context parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Context(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -6070,57 +6004,6 @@ public final class ContextOuterClass { return new ContextIdList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - contextIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - contextIds_.add(input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - contextIds_ = java.util.Collections.unmodifiableList(contextIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor; } @@ -6132,6 +6015,7 @@ public final class ContextOuterClass { public static final int CONTEXT_IDS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List contextIds_; /** @@ -6192,7 +6076,7 @@ public final class ContextOuterClass { for (int i = 0; i < contextIds_.size(); i++) { output.writeMessage(1, contextIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -6204,7 +6088,7 @@ public final class ContextOuterClass { for (int i = 0; i < contextIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -6220,7 +6104,7 @@ public final class ContextOuterClass { context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj; if (!getContextIdsList().equals(other.getContextIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -6236,7 +6120,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER; hash = (53 * hash) + getContextIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -6330,29 +6214,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextIdList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getContextIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (contextIdsBuilder_ == null) { contextIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + contextIds_ = null; contextIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -6378,7 +6256,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextIdList buildPartial() { context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) { if (contextIdsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { contextIds_ = java.util.Collections.unmodifiableList(contextIds_); @@ -6388,38 +6274,10 @@ public final class ContextOuterClass { } else { result.contextIds_ = contextIdsBuilder_.build(); } - onBuilt(); - return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextIdList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -6459,7 +6317,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -6471,17 +6329,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextIdList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); + if (contextIdsBuilder_ == null) { + ensureContextIdsIsMutable(); + contextIds_.add(m); + } else { + contextIdsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -6751,7 +6639,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextIdList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -6822,57 +6720,6 @@ public final class ContextOuterClass { return new ContextList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - contexts_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - contexts_.add(input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - contexts_ = java.util.Collections.unmodifiableList(contexts_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextList_descriptor; } @@ -6884,6 +6731,7 @@ public final class ContextOuterClass { public static final int CONTEXTS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List contexts_; /** @@ -6944,7 +6792,7 @@ public final class ContextOuterClass { for (int i = 0; i < contexts_.size(); i++) { output.writeMessage(1, contexts_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -6956,7 +6804,7 @@ public final class ContextOuterClass { for (int i = 0; i < contexts_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -6972,7 +6820,7 @@ public final class ContextOuterClass { context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj; if (!getContextsList().equals(other.getContextsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -6988,7 +6836,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXTS_FIELD_NUMBER; hash = (53 * hash) + getContextsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -7082,29 +6930,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getContextsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (contextsBuilder_ == null) { contexts_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + contexts_ = null; contextsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -7130,7 +6972,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextList buildPartial() { context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) { if (contextsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { contexts_ = java.util.Collections.unmodifiableList(contexts_); @@ -7140,38 +6990,10 @@ public final class ContextOuterClass { } else { result.contexts_ = contextsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); } - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -7211,7 +7033,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -7223,17 +7045,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry); + if (contextsBuilder_ == null) { + ensureContextsIsMutable(); + contexts_.add(m); + } else { + contextsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -7503,7 +7355,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -7582,70 +7444,6 @@ public final class ContextOuterClass { return new ContextEvent(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private ContextEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Event.Builder subBuilder = null; - if (event_ != null) { - subBuilder = event_.toBuilder(); - } - event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(event_); - event_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor; } @@ -7682,7 +7480,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { - return getEvent(); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } public static final int CONTEXT_ID_FIELD_NUMBER = 2; @@ -7712,7 +7510,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } private byte memoizedIsInitialized = -1; @@ -7736,7 +7534,7 @@ public final class ContextOuterClass { if (contextId_ != null) { output.writeMessage(2, getContextId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -7751,7 +7549,7 @@ public final class ContextOuterClass { if (contextId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -7777,7 +7575,7 @@ public final class ContextOuterClass { if (!getContextId().equals(other.getContextId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -7797,7 +7595,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER; hash = (53 * hash) + getContextId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -7891,32 +7689,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.ContextEvent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (eventBuilder_ == null) { - event_ = null; - } else { - event_ = null; + bitField0_ = 0; + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } return this; @@ -7944,48 +7734,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.ContextEvent buildPartial() { context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this); - if (eventBuilder_ == null) { - result.event_ = event_; - } else { - result.event_ = eventBuilder_.build(); - } - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ContextEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } } @java.lang.Override @@ -8007,7 +7770,7 @@ public final class ContextOuterClass { if (other.hasContextId()) { mergeContextId(other.getContextId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -8019,20 +7782,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.ContextEvent parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Event event_; private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; @@ -8042,7 +7839,7 @@ public final class ContextOuterClass { * @return Whether the event field is set. */ public boolean hasEvent() { - return eventBuilder_ != null || event_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -8066,10 +7863,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } event_ = value; - onChanged(); } else { eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8079,10 +7877,11 @@ public final class ContextOuterClass { public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { if (eventBuilder_ == null) { event_ = builderForValue.build(); - onChanged(); } else { eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8091,15 +7890,16 @@ public final class ContextOuterClass { */ public Builder mergeEvent(context.ContextOuterClass.Event value) { if (eventBuilder_ == null) { - if (event_ != null) { - event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); } else { event_ = value; } - onChanged(); } else { eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8107,13 +7907,13 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public Builder clearEvent() { - if (eventBuilder_ == null) { - event_ = null; - onChanged(); - } else { - event_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } + onChanged(); return this; } @@ -8121,6 +7921,7 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getEventFieldBuilder().getBuilder(); } @@ -8156,7 +7957,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -8180,10 +7981,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8193,10 +7995,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8205,15 +8008,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8221,13 +8025,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 2; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -8235,6 +8039,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 2; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -8288,7 +8093,17 @@ public final class ContextOuterClass { @java.lang.Override public ContextEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new ContextEvent(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -8371,70 +8186,6 @@ public final class ContextOuterClass { return new TopologyId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (topologyUuid_ != null) { - subBuilder = topologyUuid_.toBuilder(); - } - topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyUuid_); - topologyUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyId_descriptor; } @@ -8471,7 +8222,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2; @@ -8501,7 +8252,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() { - return getTopologyUuid(); + return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_; } private byte memoizedIsInitialized = -1; @@ -8525,7 +8276,7 @@ public final class ContextOuterClass { if (topologyUuid_ != null) { output.writeMessage(2, getTopologyUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -8540,7 +8291,7 @@ public final class ContextOuterClass { if (topologyUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -8566,7 +8317,7 @@ public final class ContextOuterClass { if (!getTopologyUuid().equals(other.getTopologyUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -8586,7 +8337,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER; hash = (53 * hash) + getTopologyUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -8684,32 +8435,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } - if (topologyUuidBuilder_ == null) { - topologyUuid_ = null; - } else { - topologyUuid_ = null; + topologyUuid_ = null; + if (topologyUuidBuilder_ != null) { + topologyUuidBuilder_.dispose(); topologyUuidBuilder_ = null; } return this; @@ -8737,48 +8480,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyId buildPartial() { context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this); - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); - } - if (topologyUuidBuilder_ == null) { - result.topologyUuid_ = topologyUuid_; - } else { - result.topologyUuid_ = topologyUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build(); + } } @java.lang.Override @@ -8800,7 +8516,7 @@ public final class ContextOuterClass { if (other.hasTopologyUuid()) { mergeTopologyUuid(other.getTopologyUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -8812,20 +8528,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.ContextId contextId_; private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_; @@ -8835,7 +8585,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -8859,10 +8609,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8872,10 +8623,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8884,15 +8636,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -8900,13 +8653,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -8914,6 +8667,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -8949,7 +8703,7 @@ public final class ContextOuterClass { * @return Whether the topologyUuid field is set. */ public boolean hasTopologyUuid() { - return topologyUuidBuilder_ != null || topologyUuid_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -8973,10 +8727,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyUuid_ = value; - onChanged(); } else { topologyUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8986,10 +8741,11 @@ public final class ContextOuterClass { public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (topologyUuidBuilder_ == null) { topologyUuid_ = builderForValue.build(); - onChanged(); } else { topologyUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -8998,15 +8754,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) { if (topologyUuidBuilder_ == null) { - if (topologyUuid_ != null) { - topologyUuid_ = context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getTopologyUuidBuilder().mergeFrom(value); } else { topologyUuid_ = value; } - onChanged(); } else { topologyUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -9014,13 +8771,13 @@ public final class ContextOuterClass { * .context.Uuid topology_uuid = 2; */ public Builder clearTopologyUuid() { - if (topologyUuidBuilder_ == null) { - topologyUuid_ = null; - onChanged(); - } else { - topologyUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + topologyUuid_ = null; + if (topologyUuidBuilder_ != null) { + topologyUuidBuilder_.dispose(); topologyUuidBuilder_ = null; } + onChanged(); return this; } @@ -9028,6 +8785,7 @@ public final class ContextOuterClass { * .context.Uuid topology_uuid = 2; */ public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getTopologyUuidFieldBuilder().getBuilder(); } @@ -9081,7 +8839,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -9181,6 +8949,31 @@ public final class ContextOuterClass { * repeated .context.LinkId link_ids = 4; */ context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + java.util.List getOpticalLinkIdsList(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + context.ContextOuterClass.LinkId getOpticalLinkIds(int index); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + int getOpticalLinkIdsCount(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + java.util.List getOpticalLinkIdsOrBuilderList(); + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index); } /** @@ -9200,6 +8993,7 @@ public final class ContextOuterClass { name_ = ""; deviceIds_ = java.util.Collections.emptyList(); linkIds_ = java.util.Collections.emptyList(); + opticalLinkIds_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -9208,88 +9002,6 @@ public final class ContextOuterClass { return new Topology(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Topology(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - linkIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - linkIds_ = java.util.Collections.unmodifiableList(linkIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Topology_descriptor; } @@ -9326,12 +9038,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -9368,6 +9081,7 @@ public final class ContextOuterClass { public static final int DEVICE_IDS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List deviceIds_; /** @@ -9412,6 +9126,7 @@ public final class ContextOuterClass { public static final int LINK_IDS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List linkIds_; /** @@ -9454,6 +9169,51 @@ public final class ContextOuterClass { return linkIds_.get(index); } + public static final int OPTICAL_LINK_IDS_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private java.util.List opticalLinkIds_; + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinkIdsList() { + return opticalLinkIds_; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinkIdsOrBuilderList() { + return opticalLinkIds_; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public int getOpticalLinkIdsCount() { + return opticalLinkIds_.size(); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) { + return opticalLinkIds_.get(index); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + @java.lang.Override + public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) { + return opticalLinkIds_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -9472,7 +9232,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < deviceIds_.size(); i++) { @@ -9481,7 +9241,10 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { output.writeMessage(4, linkIds_.get(i)); } - unknownFields.writeTo(output); + for (int i = 0; i < opticalLinkIds_.size(); i++) { + output.writeMessage(5, opticalLinkIds_.get(i)); + } + getUnknownFields().writeTo(output); } @java.lang.Override @@ -9493,7 +9256,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < deviceIds_.size(); i++) { @@ -9502,7 +9265,10 @@ public final class ContextOuterClass { for (int i = 0; i < linkIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i)); } - size += unknownFields.getSerializedSize(); + for (int i = 0; i < opticalLinkIds_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinkIds_.get(i)); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -9528,7 +9294,9 @@ public final class ContextOuterClass { return false; if (!getLinkIdsList().equals(other.getLinkIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getOpticalLinkIdsList().equals(other.getOpticalLinkIdsList())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -9554,7 +9322,11 @@ public final class ContextOuterClass { hash = (37 * hash) + LINK_IDS_FIELD_NUMBER; hash = (53 * hash) + getLinkIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + if (getOpticalLinkIdsCount() > 0) { + hash = (37 * hash) + OPTICAL_LINK_IDS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinkIdsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -9648,43 +9420,43 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Topology.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDeviceIdsFieldBuilder(); - getLinkIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + bitField0_ = 0; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } name_ = ""; if (deviceIdsBuilder_ == null) { deviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + deviceIds_ = null; deviceIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (linkIdsBuilder_ == null) { linkIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + linkIds_ = null; linkIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIds_ = java.util.Collections.emptyList(); + } else { + opticalLinkIds_ = null; + opticalLinkIdsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -9710,63 +9482,52 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Topology buildPartial() { context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this); - int from_bitField0_ = bitField0_; - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) { if (deviceIdsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.deviceIds_ = deviceIds_; } else { result.deviceIds_ = deviceIdsBuilder_.build(); } if (linkIdsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { linkIds_ = java.util.Collections.unmodifiableList(linkIds_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.linkIds_ = linkIds_; } else { result.linkIds_ = linkIdsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + if (opticalLinkIdsBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + opticalLinkIds_ = java.util.Collections.unmodifiableList(opticalLinkIds_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.opticalLinkIds_ = opticalLinkIds_; + } else { + result.opticalLinkIds_ = opticalLinkIdsBuilder_.build(); + } } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Topology result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } } @java.lang.Override @@ -9787,13 +9548,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (deviceIdsBuilder_ == null) { if (!other.deviceIds_.isEmpty()) { if (deviceIds_.isEmpty()) { deviceIds_ = other.deviceIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureDeviceIdsIsMutable(); deviceIds_.addAll(other.deviceIds_); @@ -9806,7 +9568,7 @@ public final class ContextOuterClass { deviceIdsBuilder_.dispose(); deviceIdsBuilder_ = null; deviceIds_ = other.deviceIds_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null; } else { deviceIdsBuilder_.addAllMessages(other.deviceIds_); @@ -9817,7 +9579,7 @@ public final class ContextOuterClass { if (!other.linkIds_.isEmpty()) { if (linkIds_.isEmpty()) { linkIds_ = other.linkIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureLinkIdsIsMutable(); linkIds_.addAll(other.linkIds_); @@ -9830,14 +9592,38 @@ public final class ContextOuterClass { linkIdsBuilder_.dispose(); linkIdsBuilder_ = null; linkIds_ = other.linkIds_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null; } else { linkIdsBuilder_.addAllMessages(other.linkIds_); } } } - this.mergeUnknownFields(other.unknownFields); + if (opticalLinkIdsBuilder_ == null) { + if (!other.opticalLinkIds_.isEmpty()) { + if (opticalLinkIds_.isEmpty()) { + opticalLinkIds_ = other.opticalLinkIds_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.addAll(other.opticalLinkIds_); + } + onChanged(); + } + } else { + if (!other.opticalLinkIds_.isEmpty()) { + if (opticalLinkIdsBuilder_.isEmpty()) { + opticalLinkIdsBuilder_.dispose(); + opticalLinkIdsBuilder_ = null; + opticalLinkIds_ = other.opticalLinkIds_; + bitField0_ = (bitField0_ & ~0x00000010); + opticalLinkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinkIdsFieldBuilder() : null; + } else { + opticalLinkIdsBuilder_.addAllMessages(other.opticalLinkIds_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -9849,17 +9635,85 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Topology parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); + if (deviceIdsBuilder_ == null) { + ensureDeviceIdsIsMutable(); + deviceIds_.add(m); + } else { + deviceIdsBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); + if (linkIdsBuilder_ == null) { + ensureLinkIdsIsMutable(); + linkIds_.add(m); + } else { + linkIdsBuilder_.addMessage(m); + } + break; + } + // case 34 + case 42: + { + context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(m); + } else { + opticalLinkIdsBuilder_.addMessage(m); + } + break; + } + // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -9874,7 +9728,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -9898,10 +9752,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9911,10 +9766,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9923,15 +9779,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -9939,13 +9796,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -9953,6 +9810,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -10022,6 +9880,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -10032,6 +9891,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -10047,6 +9907,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -10054,9 +9915,9 @@ public final class ContextOuterClass { private java.util.List deviceIds_ = java.util.Collections.emptyList(); private void ensureDeviceIdsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { deviceIds_ = new java.util.ArrayList(deviceIds_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -10208,7 +10069,7 @@ public final class ContextOuterClass { public Builder clearDeviceIds() { if (deviceIdsBuilder_ == null) { deviceIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { deviceIdsBuilder_.clear(); @@ -10282,7 +10143,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceIdsFieldBuilder() { if (deviceIdsBuilder_ == null) { - deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); deviceIds_ = null; } return deviceIdsBuilder_; @@ -10291,9 +10152,9 @@ public final class ContextOuterClass { private java.util.List linkIds_ = java.util.Collections.emptyList(); private void ensureLinkIdsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { linkIds_ = new java.util.ArrayList(linkIds_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -10445,7 +10306,7 @@ public final class ContextOuterClass { public Builder clearLinkIds() { if (linkIdsBuilder_ == null) { linkIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { linkIdsBuilder_.clear(); @@ -10519,12 +10380,249 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getLinkIdsFieldBuilder() { if (linkIdsBuilder_ == null) { - linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); linkIds_ = null; } return linkIdsBuilder_; } + private java.util.List opticalLinkIds_ = java.util.Collections.emptyList(); + + private void ensureOpticalLinkIdsIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + opticalLinkIds_ = new java.util.ArrayList(opticalLinkIds_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinkIdsBuilder_; + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsList() { + if (opticalLinkIdsBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinkIds_); + } else { + return opticalLinkIdsBuilder_.getMessageList(); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public int getOpticalLinkIdsCount() { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.size(); + } else { + return opticalLinkIdsBuilder_.getCount(); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.get(index); + } else { + return opticalLinkIdsBuilder_.getMessage(index); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.set(index, value); + onChanged(); + } else { + opticalLinkIdsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.set(index, builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(value); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) { + if (opticalLinkIdsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(index, value); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalLinkIdsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder addAllOpticalLinkIds(java.lang.Iterable values) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinkIds_); + onChanged(); + } else { + opticalLinkIdsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder clearOpticalLinkIds() { + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + opticalLinkIdsBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public Builder removeOpticalLinkIds(int index) { + if (opticalLinkIdsBuilder_ == null) { + ensureOpticalLinkIdsIsMutable(); + opticalLinkIds_.remove(index); + onChanged(); + } else { + opticalLinkIdsBuilder_.remove(index); + } + return this; + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder getOpticalLinkIdsBuilder(int index) { + return getOpticalLinkIdsFieldBuilder().getBuilder(index); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) { + if (opticalLinkIdsBuilder_ == null) { + return opticalLinkIds_.get(index); + } else { + return opticalLinkIdsBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsOrBuilderList() { + if (opticalLinkIdsBuilder_ != null) { + return opticalLinkIdsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinkIds_); + } + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder() { + return getOpticalLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance()); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder(int index) { + return getOpticalLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance()); + } + + /** + * repeated .context.LinkId optical_link_ids = 5; + */ + public java.util.List getOpticalLinkIdsBuilderList() { + return getOpticalLinkIdsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinkIdsFieldBuilder() { + if (opticalLinkIdsBuilder_ == null) { + opticalLinkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinkIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); + opticalLinkIds_ = null; + } + return opticalLinkIdsBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -10552,7 +10650,17 @@ public final class ContextOuterClass { @java.lang.Override public Topology parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Topology(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -10652,6 +10760,31 @@ public final class ContextOuterClass { * repeated .context.Link links = 4; */ context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + java.util.List getOpticalLinksList(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + context.ContextOuterClass.OpticalLink getOpticalLinks(int index); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + int getOpticalLinksCount(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + java.util.List getOpticalLinksOrBuilderList(); + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index); } /** @@ -10671,6 +10804,7 @@ public final class ContextOuterClass { name_ = ""; devices_ = java.util.Collections.emptyList(); links_ = java.util.Collections.emptyList(); + opticalLinks_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -10679,88 +10813,6 @@ public final class ContextOuterClass { return new TopologyDetails(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - devices_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry)); - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - links_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - devices_ = java.util.Collections.unmodifiableList(devices_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - links_ = java.util.Collections.unmodifiableList(links_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor; } @@ -10797,12 +10849,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -10839,6 +10892,7 @@ public final class ContextOuterClass { public static final int DEVICES_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List devices_; /** @@ -10883,6 +10937,7 @@ public final class ContextOuterClass { public static final int LINKS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") private java.util.List links_; /** @@ -10925,6 +10980,51 @@ public final class ContextOuterClass { return links_.get(index); } + public static final int OPTICAL_LINKS_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private java.util.List opticalLinks_; + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinksList() { + return opticalLinks_; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public java.util.List getOpticalLinksOrBuilderList() { + return opticalLinks_; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public int getOpticalLinksCount() { + return opticalLinks_.size(); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + return opticalLinks_.get(index); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + return opticalLinks_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -10943,7 +11043,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } for (int i = 0; i < devices_.size(); i++) { @@ -10952,7 +11052,10 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { output.writeMessage(4, links_.get(i)); } - unknownFields.writeTo(output); + for (int i = 0; i < opticalLinks_.size(); i++) { + output.writeMessage(5, opticalLinks_.get(i)); + } + getUnknownFields().writeTo(output); } @java.lang.Override @@ -10964,7 +11067,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } for (int i = 0; i < devices_.size(); i++) { @@ -10973,7 +11076,10 @@ public final class ContextOuterClass { for (int i = 0; i < links_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i)); } - size += unknownFields.getSerializedSize(); + for (int i = 0; i < opticalLinks_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinks_.get(i)); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -10999,7 +11105,9 @@ public final class ContextOuterClass { return false; if (!getLinksList().equals(other.getLinksList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getOpticalLinksList().equals(other.getOpticalLinksList())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -11025,7 +11133,11 @@ public final class ContextOuterClass { hash = (37 * hash) + LINKS_FIELD_NUMBER; hash = (53 * hash) + getLinksList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + if (getOpticalLinksCount() > 0) { + hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinksList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -11119,43 +11231,43 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyDetails.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDevicesFieldBuilder(); - getLinksFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + bitField0_ = 0; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } name_ = ""; if (devicesBuilder_ == null) { devices_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + devices_ = null; devicesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); if (linksBuilder_ == null) { links_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + links_ = null; linksBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + } else { + opticalLinks_ = null; + opticalLinksBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -11181,63 +11293,52 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyDetails buildPartial() { context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this); - int from_bitField0_ = bitField0_; - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) { if (devicesBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { devices_ = java.util.Collections.unmodifiableList(devices_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.devices_ = devices_; } else { result.devices_ = devicesBuilder_.build(); } if (linksBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { links_ = java.util.Collections.unmodifiableList(links_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } result.links_ = links_; } else { result.links_ = linksBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + if (opticalLinksBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.opticalLinks_ = opticalLinks_; + } else { + result.opticalLinks_ = opticalLinksBuilder_.build(); + } } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyDetails result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } } @java.lang.Override @@ -11258,13 +11359,14 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (devicesBuilder_ == null) { if (!other.devices_.isEmpty()) { if (devices_.isEmpty()) { devices_ = other.devices_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureDevicesIsMutable(); devices_.addAll(other.devices_); @@ -11277,7 +11379,7 @@ public final class ContextOuterClass { devicesBuilder_.dispose(); devicesBuilder_ = null; devices_ = other.devices_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null; } else { devicesBuilder_.addAllMessages(other.devices_); @@ -11288,7 +11390,7 @@ public final class ContextOuterClass { if (!other.links_.isEmpty()) { if (links_.isEmpty()) { links_ = other.links_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); } else { ensureLinksIsMutable(); links_.addAll(other.links_); @@ -11301,14 +11403,38 @@ public final class ContextOuterClass { linksBuilder_.dispose(); linksBuilder_ = null; links_ = other.links_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null; } else { linksBuilder_.addAllMessages(other.links_); } } } - this.mergeUnknownFields(other.unknownFields); + if (opticalLinksBuilder_ == null) { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinks_.isEmpty()) { + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureOpticalLinksIsMutable(); + opticalLinks_.addAll(other.opticalLinks_); + } + onChanged(); + } + } else { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinksBuilder_.isEmpty()) { + opticalLinksBuilder_.dispose(); + opticalLinksBuilder_ = null; + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000010); + opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null; + } else { + opticalLinksBuilder_.addAllMessages(other.opticalLinks_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -11320,17 +11446,85 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyDetails parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry); + if (devicesBuilder_ == null) { + ensureDevicesIsMutable(); + devices_.add(m); + } else { + devicesBuilder_.addMessage(m); + } + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry); + if (linksBuilder_ == null) { + ensureLinksIsMutable(); + links_.add(m); + } else { + linksBuilder_.addMessage(m); + } + break; + } + // case 34 + case 42: + { + context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry); + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(m); + } else { + opticalLinksBuilder_.addMessage(m); + } + break; + } + // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -11345,7 +11539,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -11369,10 +11563,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11382,10 +11577,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11394,15 +11590,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -11410,13 +11607,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -11424,6 +11621,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 1; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -11493,6 +11691,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -11503,6 +11702,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -11518,6 +11718,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -11525,9 +11726,9 @@ public final class ContextOuterClass { private java.util.List devices_ = java.util.Collections.emptyList(); private void ensureDevicesIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { devices_ = new java.util.ArrayList(devices_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -11679,7 +11880,7 @@ public final class ContextOuterClass { public Builder clearDevices() { if (devicesBuilder_ == null) { devices_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { devicesBuilder_.clear(); @@ -11753,7 +11954,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDevicesFieldBuilder() { if (devicesBuilder_ == null) { - devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); devices_ = null; } return devicesBuilder_; @@ -11762,9 +11963,9 @@ public final class ContextOuterClass { private java.util.List links_ = java.util.Collections.emptyList(); private void ensureLinksIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000008) != 0)) { links_ = new java.util.ArrayList(links_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000008; } } @@ -11916,7 +12117,7 @@ public final class ContextOuterClass { public Builder clearLinks() { if (linksBuilder_ == null) { links_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { linksBuilder_.clear(); @@ -11990,12 +12191,249 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getLinksFieldBuilder() { if (linksBuilder_ == null) { - linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(links_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); links_ = null; } return linksBuilder_; } + private java.util.List opticalLinks_ = java.util.Collections.emptyList(); + + private void ensureOpticalLinksIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + opticalLinks_ = new java.util.ArrayList(opticalLinks_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinksBuilder_; + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksList() { + if (opticalLinksBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinks_); + } else { + return opticalLinksBuilder_.getMessageList(); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public int getOpticalLinksCount() { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.size(); + } else { + return opticalLinksBuilder_.getCount(); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessage(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, value); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder addAllOpticalLinks(java.lang.Iterable values) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_); + onChanged(); + } else { + opticalLinksBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder clearOpticalLinks() { + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + opticalLinksBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public Builder removeOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.remove(index); + onChanged(); + } else { + opticalLinksBuilder_.remove(index); + } + return this; + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().getBuilder(index); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); + } else { + return opticalLinksBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksOrBuilderList() { + if (opticalLinksBuilder_ != null) { + return opticalLinksBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinks_); + } + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() { + return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 5; + */ + public java.util.List getOpticalLinksBuilderList() { + return getOpticalLinksFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinksFieldBuilder() { + if (opticalLinksBuilder_ == null) { + opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinks_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean()); + opticalLinks_ = null; + } + return opticalLinksBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); @@ -12023,7 +12461,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyDetails(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -12094,57 +12542,6 @@ public final class ContextOuterClass { return new TopologyIdList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor; } @@ -12156,6 +12553,7 @@ public final class ContextOuterClass { public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List topologyIds_; /** @@ -12216,7 +12614,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologyIds_.size(); i++) { output.writeMessage(1, topologyIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -12228,7 +12626,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologyIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -12244,7 +12642,7 @@ public final class ContextOuterClass { context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj; if (!getTopologyIdsList().equals(other.getTopologyIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -12260,7 +12658,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER; hash = (53 * hash) + getTopologyIdsList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -12354,29 +12752,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyIdList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologyIdsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (topologyIdsBuilder_ == null) { topologyIds_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologyIds_ = null; topologyIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -12402,7 +12794,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyIdList buildPartial() { context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) { if (topologyIdsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_); @@ -12412,38 +12812,10 @@ public final class ContextOuterClass { } else { result.topologyIds_ = topologyIdsBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); } - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyIdList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -12483,7 +12855,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -12495,17 +12867,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyIdList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); + if (topologyIdsBuilder_ == null) { + ensureTopologyIdsIsMutable(); + topologyIds_.add(m); + } else { + topologyIdsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -12775,7 +13177,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyIdList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -12846,57 +13258,6 @@ public final class ContextOuterClass { return new TopologyList(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - topologies_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - topologies_.add(input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - topologies_ = java.util.Collections.unmodifiableList(topologies_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyList_descriptor; } @@ -12908,6 +13269,7 @@ public final class ContextOuterClass { public static final int TOPOLOGIES_FIELD_NUMBER = 1; + @SuppressWarnings("serial") private java.util.List topologies_; /** @@ -12968,7 +13330,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologies_.size(); i++) { output.writeMessage(1, topologies_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -12980,7 +13342,7 @@ public final class ContextOuterClass { for (int i = 0; i < topologies_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -12996,7 +13358,7 @@ public final class ContextOuterClass { context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj; if (!getTopologiesList().equals(other.getTopologiesList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -13012,7 +13374,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER; hash = (53 * hash) + getTopologiesList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -13106,29 +13468,23 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getTopologiesFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; if (topologiesBuilder_ == null) { topologies_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + topologies_ = null; topologiesBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -13154,7 +13510,15 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyList buildPartial() { context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this); - int from_bitField0_ = bitField0_; + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) { if (topologiesBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { topologies_ = java.util.Collections.unmodifiableList(topologies_); @@ -13164,38 +13528,10 @@ public final class ContextOuterClass { } else { result.topologies_ = topologiesBuilder_.build(); } - onBuilt(); - return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override @@ -13235,7 +13571,7 @@ public final class ContextOuterClass { } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -13247,17 +13583,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry); + if (topologiesBuilder_ == null) { + ensureTopologiesIsMutable(); + topologies_.add(m); + } else { + topologiesBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -13527,7 +13893,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyList(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -13606,70 +13982,6 @@ public final class ContextOuterClass { return new TopologyEvent(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TopologyEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Event.Builder subBuilder = null; - if (event_ != null) { - subBuilder = event_.toBuilder(); - } - event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(event_); - event_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - context.ContextOuterClass.TopologyId.Builder subBuilder = null; - if (topologyId_ != null) { - subBuilder = topologyId_.toBuilder(); - } - topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(topologyId_); - topologyId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor; } @@ -13706,7 +14018,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { - return getEvent(); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } public static final int TOPOLOGY_ID_FIELD_NUMBER = 2; @@ -13736,7 +14048,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() { - return getTopologyId(); + return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_; } private byte memoizedIsInitialized = -1; @@ -13760,7 +14072,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { output.writeMessage(2, getTopologyId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -13775,7 +14087,7 @@ public final class ContextOuterClass { if (topologyId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -13801,7 +14113,7 @@ public final class ContextOuterClass { if (!getTopologyId().equals(other.getTopologyId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -13821,7 +14133,7 @@ public final class ContextOuterClass { hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER; hash = (53 * hash) + getTopologyId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -13915,32 +14227,24 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.TopologyEvent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (eventBuilder_ == null) { - event_ = null; - } else { - event_ = null; + bitField0_ = 0; + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } - if (topologyIdBuilder_ == null) { - topologyId_ = null; - } else { - topologyId_ = null; + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } return this; @@ -13968,48 +14272,21 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.TopologyEvent buildPartial() { context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this); - if (eventBuilder_ == null) { - result.event_ = event_; - } else { - result.event_ = eventBuilder_.build(); - } - if (topologyIdBuilder_ == null) { - result.topologyId_ = topologyId_; - } else { - result.topologyId_ = topologyIdBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.TopologyEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build(); + } } @java.lang.Override @@ -14031,7 +14308,7 @@ public final class ContextOuterClass { if (other.hasTopologyId()) { mergeTopologyId(other.getTopologyId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -14043,20 +14320,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TopologyEvent parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Event event_; private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; @@ -14066,7 +14377,7 @@ public final class ContextOuterClass { * @return Whether the event field is set. */ public boolean hasEvent() { - return eventBuilder_ != null || event_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -14090,10 +14401,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } event_ = value; - onChanged(); } else { eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14103,10 +14415,11 @@ public final class ContextOuterClass { public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { if (eventBuilder_ == null) { event_ = builderForValue.build(); - onChanged(); } else { eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14115,15 +14428,16 @@ public final class ContextOuterClass { */ public Builder mergeEvent(context.ContextOuterClass.Event value) { if (eventBuilder_ == null) { - if (event_ != null) { - event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); } else { event_ = value; } - onChanged(); } else { eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14131,13 +14445,13 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public Builder clearEvent() { - if (eventBuilder_ == null) { - event_ = null; - onChanged(); - } else { - event_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); eventBuilder_ = null; } + onChanged(); return this; } @@ -14145,6 +14459,7 @@ public final class ContextOuterClass { * .context.Event event = 1; */ public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getEventFieldBuilder().getBuilder(); } @@ -14180,7 +14495,7 @@ public final class ContextOuterClass { * @return Whether the topologyId field is set. */ public boolean hasTopologyId() { - return topologyIdBuilder_ != null || topologyId_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** @@ -14204,10 +14519,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } topologyId_ = value; - onChanged(); } else { topologyIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14217,10 +14533,11 @@ public final class ContextOuterClass { public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) { if (topologyIdBuilder_ == null) { topologyId_ = builderForValue.build(); - onChanged(); } else { topologyIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14229,15 +14546,16 @@ public final class ContextOuterClass { */ public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) { if (topologyIdBuilder_ == null) { - if (topologyId_ != null) { - topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) { + getTopologyIdBuilder().mergeFrom(value); } else { topologyId_ = value; } - onChanged(); } else { topologyIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } @@ -14245,13 +14563,13 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 2; */ public Builder clearTopologyId() { - if (topologyIdBuilder_ == null) { - topologyId_ = null; - onChanged(); - } else { - topologyId_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + topologyId_ = null; + if (topologyIdBuilder_ != null) { + topologyIdBuilder_.dispose(); topologyIdBuilder_ = null; } + onChanged(); return this; } @@ -14259,6 +14577,7 @@ public final class ContextOuterClass { * .context.TopologyId topology_id = 2; */ public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getTopologyIdFieldBuilder().getBuilder(); } @@ -14312,7 +14631,17 @@ public final class ContextOuterClass { @java.lang.Override public TopologyEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TopologyEvent(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -14378,57 +14707,6 @@ public final class ContextOuterClass { return new DeviceId(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private DeviceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (deviceUuid_ != null) { - subBuilder = deviceUuid_.toBuilder(); - } - deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceUuid_); - deviceUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_DeviceId_descriptor; } @@ -14465,7 +14743,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() { - return getDeviceUuid(); + return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_; } private byte memoizedIsInitialized = -1; @@ -14486,7 +14764,7 @@ public final class ContextOuterClass { if (deviceUuid_ != null) { output.writeMessage(1, getDeviceUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -14498,7 +14776,7 @@ public final class ContextOuterClass { if (deviceUuid_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -14518,7 +14796,7 @@ public final class ContextOuterClass { if (!getDeviceUuid().equals(other.getDeviceUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -14534,7 +14812,7 @@ public final class ContextOuterClass { hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER; hash = (53 * hash) + getDeviceUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -14632,26 +14910,19 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.DeviceId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (deviceUuidBuilder_ == null) { - deviceUuid_ = null; - } else { - deviceUuid_ = null; + bitField0_ = 0; + deviceUuid_ = null; + if (deviceUuidBuilder_ != null) { + deviceUuidBuilder_.dispose(); deviceUuidBuilder_ = null; } return this; @@ -14679,43 +14950,18 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.DeviceId buildPartial() { context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this); - if (deviceUuidBuilder_ == null) { - result.deviceUuid_ = deviceUuid_; - } else { - result.deviceUuid_ = deviceUuidBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.DeviceId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build(); + } } @java.lang.Override @@ -14734,7 +14980,7 @@ public final class ContextOuterClass { if (other.hasDeviceUuid()) { mergeDeviceUuid(other.getDeviceUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -14746,20 +14992,47 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.DeviceId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.Uuid deviceUuid_; private com.google.protobuf.SingleFieldBuilderV3 deviceUuidBuilder_; @@ -14769,7 +15042,7 @@ public final class ContextOuterClass { * @return Whether the deviceUuid field is set. */ public boolean hasDeviceUuid() { - return deviceUuidBuilder_ != null || deviceUuid_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -14793,10 +15066,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceUuid_ = value; - onChanged(); } else { deviceUuidBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14806,10 +15080,11 @@ public final class ContextOuterClass { public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { if (deviceUuidBuilder_ == null) { deviceUuid_ = builderForValue.build(); - onChanged(); } else { deviceUuidBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14818,15 +15093,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) { if (deviceUuidBuilder_ == null) { - if (deviceUuid_ != null) { - deviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getDeviceUuidBuilder().mergeFrom(value); } else { deviceUuid_ = value; } - onChanged(); } else { deviceUuidBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -14834,13 +15110,13 @@ public final class ContextOuterClass { * .context.Uuid device_uuid = 1; */ public Builder clearDeviceUuid() { - if (deviceUuidBuilder_ == null) { - deviceUuid_ = null; - onChanged(); - } else { - deviceUuid_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + deviceUuid_ = null; + if (deviceUuidBuilder_ != null) { + deviceUuidBuilder_.dispose(); deviceUuidBuilder_ = null; } + onChanged(); return this; } @@ -14848,6 +15124,7 @@ public final class ContextOuterClass { * .context.Uuid device_uuid = 1; */ public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getDeviceUuidFieldBuilder().getBuilder(); } @@ -14901,7 +15178,17 @@ public final class ContextOuterClass { @java.lang.Override public DeviceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new DeviceId(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -15153,154 +15440,6 @@ public final class ContextOuterClass { return new Device(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private Device(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (deviceId_ != null) { - subBuilder = deviceId_.toBuilder(); - } - deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceId_); - deviceId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - deviceType_ = s; - break; - } - case 34: - { - context.ContextOuterClass.DeviceConfig.Builder subBuilder = null; - if (deviceConfig_ != null) { - subBuilder = deviceConfig_.toBuilder(); - } - deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceConfig_); - deviceConfig_ = subBuilder.buildPartial(); - } - break; - } - case 40: - { - int rawValue = input.readEnum(); - deviceOperationalStatus_ = rawValue; - break; - } - case 48: - { - int rawValue = input.readEnum(); - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceDrivers_.add(rawValue); - break; - } - case 50: - { - int length = input.readRawVarint32(); - int oldLimit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - int rawValue = input.readEnum(); - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - deviceDrivers_.add(rawValue); - } - input.popLimit(oldLimit); - break; - } - case 58: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - deviceEndpoints_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - deviceEndpoints_.add(input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry)); - break; - } - case 66: - { - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - components_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - components_.add(input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry)); - break; - } - case 74: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (controllerId_ != null) { - subBuilder = controllerId_.toBuilder(); - } - controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(controllerId_); - controllerId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_); - } - if (((mutable_bitField0_ & 0x00000004) != 0)) { - components_ = java.util.Collections.unmodifiableList(components_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return context.ContextOuterClass.internal_static_context_Device_descriptor; } @@ -15337,12 +15476,13 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { - return getDeviceId(); + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } public static final int NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object name_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** * string name = 2; @@ -15379,7 +15519,8 @@ public final class ContextOuterClass { public static final int DEVICE_TYPE_FIELD_NUMBER = 3; - private volatile java.lang.Object deviceType_; + @SuppressWarnings("serial") + private volatile java.lang.Object deviceType_ = ""; /** * string device_type = 3; @@ -15441,12 +15582,12 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() { - return getDeviceConfig(); + return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_; } public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5; - private int deviceOperationalStatus_; + private int deviceOperationalStatus_ = 0; /** * .context.DeviceOperationalStatusEnum device_operational_status = 5; @@ -15463,20 +15604,19 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_); + context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_); return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result; } public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6; + @SuppressWarnings("serial") private java.util.List deviceDrivers_; private static final com.google.protobuf.Internal.ListAdapter.Converter deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() { public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from); + context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from); return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result; } }; @@ -15532,6 +15672,7 @@ public final class ContextOuterClass { public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7; + @SuppressWarnings("serial") private java.util.List deviceEndpoints_; /** @@ -15576,6 +15717,7 @@ public final class ContextOuterClass { public static final int COMPONENTS_FIELD_NUMBER = 8; + @SuppressWarnings("serial") private java.util.List components_; /** @@ -15677,7 +15819,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() { - return getControllerId(); + return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_; } private byte memoizedIsInitialized = -1; @@ -15699,10 +15841,10 @@ public final class ContextOuterClass { if (deviceId_ != null) { output.writeMessage(1, getDeviceId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } - if (!getDeviceTypeBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_); } if (deviceConfig_ != null) { @@ -15727,7 +15869,7 @@ public final class ContextOuterClass { if (controllerId_ != null) { output.writeMessage(9, getControllerId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -15739,10 +15881,10 @@ public final class ContextOuterClass { if (deviceId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId()); } - if (!getNameBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } - if (!getDeviceTypeBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_); } if (deviceConfig_ != null) { @@ -15772,7 +15914,7 @@ public final class ContextOuterClass { if (controllerId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -15816,7 +15958,7 @@ public final class ContextOuterClass { if (!getControllerId().equals(other.getControllerId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -15858,7 +16000,7 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER; hash = (53 * hash) + getControllerId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -15952,57 +16094,48 @@ public final class ContextOuterClass { // Construct using context.ContextOuterClass.Device.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getDeviceEndpointsFieldBuilder(); - getComponentsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (deviceIdBuilder_ == null) { - deviceId_ = null; - } else { - deviceId_ = null; + bitField0_ = 0; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } name_ = ""; deviceType_ = ""; - if (deviceConfigBuilder_ == null) { - deviceConfig_ = null; - } else { - deviceConfig_ = null; + deviceConfig_ = null; + if (deviceConfigBuilder_ != null) { + deviceConfigBuilder_.dispose(); deviceConfigBuilder_ = null; } deviceOperationalStatus_ = 0; deviceDrivers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); if (deviceEndpointsBuilder_ == null) { deviceEndpoints_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); } else { + deviceEndpoints_ = null; deviceEndpointsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000040); if (componentsBuilder_ == null) { components_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); } else { + components_ = null; componentsBuilder_.clear(); } - if (controllerIdBuilder_ == null) { - controllerId_ = null; - } else { - controllerId_ = null; + bitField0_ = (bitField0_ & ~0x00000080); + controllerId_ = null; + if (controllerIdBuilder_ != null) { + controllerIdBuilder_.dispose(); controllerIdBuilder_ = null; } return this; @@ -16030,80 +16163,60 @@ public final class ContextOuterClass { @java.lang.Override public context.ContextOuterClass.Device buildPartial() { context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this); - int from_bitField0_ = bitField0_; - if (deviceIdBuilder_ == null) { - result.deviceId_ = deviceId_; - } else { - result.deviceId_ = deviceIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.name_ = name_; - result.deviceType_ = deviceType_; - if (deviceConfigBuilder_ == null) { - result.deviceConfig_ = deviceConfig_; - } else { - result.deviceConfig_ = deviceConfigBuilder_.build(); - } - result.deviceOperationalStatus_ = deviceOperationalStatus_; - if (((bitField0_ & 0x00000001) != 0)) { + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) { + if (((bitField0_ & 0x00000020) != 0)) { deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); } result.deviceDrivers_ = deviceDrivers_; if (deviceEndpointsBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { + if (((bitField0_ & 0x00000040) != 0)) { deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); } result.deviceEndpoints_ = deviceEndpoints_; } else { result.deviceEndpoints_ = deviceEndpointsBuilder_.build(); } if (componentsBuilder_ == null) { - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000080) != 0)) { components_ = java.util.Collections.unmodifiableList(components_); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); } result.components_ = components_; } else { result.components_ = componentsBuilder_.build(); } - if (controllerIdBuilder_ == null) { - result.controllerId_ = controllerId_; - } else { - result.controllerId_ = controllerIdBuilder_.build(); - } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); } - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.Device result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.deviceType_ = deviceType_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build(); + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.deviceOperationalStatus_ = deviceOperationalStatus_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build(); + } } @java.lang.Override @@ -16124,10 +16237,12 @@ public final class ContextOuterClass { } if (!other.getName().isEmpty()) { name_ = other.name_; + bitField0_ |= 0x00000002; onChanged(); } if (!other.getDeviceType().isEmpty()) { deviceType_ = other.deviceType_; + bitField0_ |= 0x00000004; onChanged(); } if (other.hasDeviceConfig()) { @@ -16139,7 +16254,7 @@ public final class ContextOuterClass { if (!other.deviceDrivers_.isEmpty()) { if (deviceDrivers_.isEmpty()) { deviceDrivers_ = other.deviceDrivers_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); } else { ensureDeviceDriversIsMutable(); deviceDrivers_.addAll(other.deviceDrivers_); @@ -16150,7 +16265,7 @@ public final class ContextOuterClass { if (!other.deviceEndpoints_.isEmpty()) { if (deviceEndpoints_.isEmpty()) { deviceEndpoints_ = other.deviceEndpoints_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); } else { ensureDeviceEndpointsIsMutable(); deviceEndpoints_.addAll(other.deviceEndpoints_); @@ -16163,7 +16278,7 @@ public final class ContextOuterClass { deviceEndpointsBuilder_.dispose(); deviceEndpointsBuilder_ = null; deviceEndpoints_ = other.deviceEndpoints_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null; } else { deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_); @@ -16174,7 +16289,7 @@ public final class ContextOuterClass { if (!other.components_.isEmpty()) { if (components_.isEmpty()) { components_ = other.components_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); } else { ensureComponentsIsMutable(); components_.addAll(other.components_); @@ -16187,7 +16302,7 @@ public final class ContextOuterClass { componentsBuilder_.dispose(); componentsBuilder_ = null; components_ = other.components_; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null; } else { componentsBuilder_.addAllMessages(other.components_); @@ -16197,7 +16312,7 @@ public final class ContextOuterClass { if (other.hasControllerId()) { mergeControllerId(other.getControllerId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -16209,17 +16324,122 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Device parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + deviceType_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 40: + { + deviceOperationalStatus_ = input.readEnum(); + bitField0_ |= 0x00000010; + break; + } + // case 40 + case 48: + { + int tmpRaw = input.readEnum(); + ensureDeviceDriversIsMutable(); + deviceDrivers_.add(tmpRaw); + break; + } + // case 48 + case 50: + { + int length = input.readRawVarint32(); + int oldLimit = input.pushLimit(length); + while (input.getBytesUntilLimit() > 0) { + int tmpRaw = input.readEnum(); + ensureDeviceDriversIsMutable(); + deviceDrivers_.add(tmpRaw); + } + input.popLimit(oldLimit); + break; + } + // case 50 + case 58: + { + context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry); + if (deviceEndpointsBuilder_ == null) { + ensureDeviceEndpointsIsMutable(); + deviceEndpoints_.add(m); + } else { + deviceEndpointsBuilder_.addMessage(m); + } + break; + } + // case 58 + case 66: + { + context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry); + if (componentsBuilder_ == null) { + ensureComponentsIsMutable(); + components_.add(m); + } else { + componentsBuilder_.addMessage(m); + } + break; + } + // case 66 + case 74: + { + input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000100; + break; + } + // case 74 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -16234,7 +16454,7 @@ public final class ContextOuterClass { * @return Whether the deviceId field is set. */ public boolean hasDeviceId() { - return deviceIdBuilder_ != null || deviceId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -16258,10 +16478,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceId_ = value; - onChanged(); } else { deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16271,10 +16492,11 @@ public final class ContextOuterClass { public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (deviceIdBuilder_ == null) { deviceId_ = builderForValue.build(); - onChanged(); } else { deviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16283,15 +16505,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { if (deviceIdBuilder_ == null) { - if (deviceId_ != null) { - deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { deviceId_ = value; } - onChanged(); } else { deviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -16299,13 +16522,13 @@ public final class ContextOuterClass { * .context.DeviceId device_id = 1; */ public Builder clearDeviceId() { - if (deviceIdBuilder_ == null) { - deviceId_ = null; - onChanged(); - } else { - deviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } + onChanged(); return this; } @@ -16313,6 +16536,7 @@ public final class ContextOuterClass { * .context.DeviceId device_id = 1; */ public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getDeviceIdFieldBuilder().getBuilder(); } @@ -16382,6 +16606,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -16392,6 +16617,7 @@ public final class ContextOuterClass { */ public Builder clearName() { name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -16407,6 +16633,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); name_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -16454,6 +16681,7 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceType_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -16464,6 +16692,7 @@ public final class ContextOuterClass { */ public Builder clearDeviceType() { deviceType_ = getDefaultInstance().getDeviceType(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } @@ -16479,6 +16708,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); deviceType_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -16492,7 +16722,7 @@ public final class ContextOuterClass { * @return Whether the deviceConfig field is set. */ public boolean hasDeviceConfig() { - return deviceConfigBuilder_ != null || deviceConfig_ != null; + return ((bitField0_ & 0x00000008) != 0); } /** @@ -16516,10 +16746,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } deviceConfig_ = value; - onChanged(); } else { deviceConfigBuilder_.setMessage(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16529,10 +16760,11 @@ public final class ContextOuterClass { public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) { if (deviceConfigBuilder_ == null) { deviceConfig_ = builderForValue.build(); - onChanged(); } else { deviceConfigBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16541,15 +16773,16 @@ public final class ContextOuterClass { */ public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) { if (deviceConfigBuilder_ == null) { - if (deviceConfig_ != null) { - deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) { + getDeviceConfigBuilder().mergeFrom(value); } else { deviceConfig_ = value; } - onChanged(); } else { deviceConfigBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000008; + onChanged(); return this; } @@ -16557,13 +16790,13 @@ public final class ContextOuterClass { * .context.DeviceConfig device_config = 4; */ public Builder clearDeviceConfig() { - if (deviceConfigBuilder_ == null) { - deviceConfig_ = null; - onChanged(); - } else { - deviceConfig_ = null; + bitField0_ = (bitField0_ & ~0x00000008); + deviceConfig_ = null; + if (deviceConfigBuilder_ != null) { + deviceConfigBuilder_.dispose(); deviceConfigBuilder_ = null; } + onChanged(); return this; } @@ -16571,6 +16804,7 @@ public final class ContextOuterClass { * .context.DeviceConfig device_config = 4; */ public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() { + bitField0_ |= 0x00000008; onChanged(); return getDeviceConfigFieldBuilder().getBuilder(); } @@ -16615,6 +16849,7 @@ public final class ContextOuterClass { */ public Builder setDeviceOperationalStatusValue(int value) { deviceOperationalStatus_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -16625,8 +16860,7 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() { - @SuppressWarnings("deprecation") - context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_); + context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_); return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result; } @@ -16639,6 +16873,7 @@ public final class ContextOuterClass { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000010; deviceOperationalStatus_ = value.getNumber(); onChanged(); return this; @@ -16649,6 +16884,7 @@ public final class ContextOuterClass { * @return This builder for chaining. */ public Builder clearDeviceOperationalStatus() { + bitField0_ = (bitField0_ & ~0x00000010); deviceOperationalStatus_ = 0; onChanged(); return this; @@ -16657,9 +16893,9 @@ public final class ContextOuterClass { private java.util.List deviceDrivers_ = java.util.Collections.emptyList(); private void ensureDeviceDriversIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000020) != 0)) { deviceDrivers_ = new java.util.ArrayList(deviceDrivers_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000020; } } @@ -16739,7 +16975,7 @@ public final class ContextOuterClass { */ public Builder clearDeviceDrivers() { deviceDrivers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000020); onChanged(); return this; } @@ -16763,8 +16999,8 @@ public final class ContextOuterClass { /** * repeated .context.DeviceDriverEnum device_drivers = 6; - * @param index The index of the value to return. - * @return The enum numeric value on the wire of deviceDrivers at the given index. + * @param index The index to set the value at. + * @param value The enum numeric value on the wire for deviceDrivers to set. * @return This builder for chaining. */ public Builder setDeviceDriversValue(int index, int value) { @@ -16803,9 +17039,9 @@ public final class ContextOuterClass { private java.util.List deviceEndpoints_ = java.util.Collections.emptyList(); private void ensureDeviceEndpointsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!((bitField0_ & 0x00000040) != 0)) { deviceEndpoints_ = new java.util.ArrayList(deviceEndpoints_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000040; } } @@ -16957,7 +17193,7 @@ public final class ContextOuterClass { public Builder clearDeviceEndpoints() { if (deviceEndpointsBuilder_ == null) { deviceEndpoints_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000040); onChanged(); } else { deviceEndpointsBuilder_.clear(); @@ -17031,7 +17267,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceEndpointsFieldBuilder() { if (deviceEndpointsBuilder_ == null) { - deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceEndpoints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean()); deviceEndpoints_ = null; } return deviceEndpointsBuilder_; @@ -17040,9 +17276,9 @@ public final class ContextOuterClass { private java.util.List components_ = java.util.Collections.emptyList(); private void ensureComponentsIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { + if (!((bitField0_ & 0x00000080) != 0)) { components_ = new java.util.ArrayList(components_); - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000080; } } @@ -17238,7 +17474,7 @@ public final class ContextOuterClass { public Builder clearComponents() { if (componentsBuilder_ == null) { components_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000080); onChanged(); } else { componentsBuilder_.clear(); @@ -17340,7 +17576,7 @@ public final class ContextOuterClass { private com.google.protobuf.RepeatedFieldBuilderV3 getComponentsFieldBuilder() { if (componentsBuilder_ == null) { - componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(components_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); + componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean()); components_ = null; } return componentsBuilder_; @@ -17359,7 +17595,7 @@ public final class ContextOuterClass { * @return Whether the controllerId field is set. */ public boolean hasControllerId() { - return controllerIdBuilder_ != null || controllerId_ != null; + return ((bitField0_ & 0x00000100) != 0); } /** @@ -17391,10 +17627,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } controllerId_ = value; - onChanged(); } else { controllerIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17408,10 +17645,11 @@ public final class ContextOuterClass { public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (controllerIdBuilder_ == null) { controllerId_ = builderForValue.build(); - onChanged(); } else { controllerIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17424,15 +17662,16 @@ public final class ContextOuterClass { */ public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) { if (controllerIdBuilder_ == null) { - if (controllerId_ != null) { - controllerId_ = context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getControllerIdBuilder().mergeFrom(value); } else { controllerId_ = value; } - onChanged(); } else { controllerIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -17444,13 +17683,13 @@ public final class ContextOuterClass { * .context.DeviceId controller_id = 9; */ public Builder clearControllerId() { - if (controllerIdBuilder_ == null) { - controllerId_ = null; - onChanged(); - } else { - controllerId_ = null; + bitField0_ = (bitField0_ & ~0x00000100); + controllerId_ = null; + if (controllerIdBuilder_ != null) { + controllerIdBuilder_.dispose(); controllerIdBuilder_ = null; } + onChanged(); return this; } @@ -17462,6 +17701,7 @@ public final class ContextOuterClass { * .context.DeviceId controller_id = 9; */ public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() { + bitField0_ |= 0x00000100; onChanged(); return getControllerIdFieldBuilder().getBuilder(); } @@ -17523,7 +17763,17 @@ public final class ContextOuterClass { @java.lang.Override public Device parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Device(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -17626,7 +17876,9 @@ public final class ContextOuterClass { * * map<string, string> attributes = 4; */ - java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue); + /* nullable */ + java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */ + java.lang.String defaultValue); /** *
@@ -17679,86 +17931,6 @@ public final class ContextOuterClass {
             return new Component();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Component(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (componentUuid_ != null) {
-                                    subBuilder = componentUuid_.toBuilder();
-                                }
-                                componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(componentUuid_);
-                                    componentUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                type_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                com.google.protobuf.MapEntry attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
-                                attributes_.getMutableMap().put(attributes__.getKey(), attributes__.getValue());
-                                break;
-                            }
-                        case 42:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                parent_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Component_descriptor;
         }
@@ -17806,12 +17978,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-            return getComponentUuid();
+            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -17848,7 +18021,8 @@ public final class ContextOuterClass {
 
         public static final int TYPE_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object type_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object type_ = "";
 
         /**
          * string type = 3;
@@ -17890,6 +18064,7 @@ public final class ContextOuterClass {
             static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, "");
         }
 
+        @SuppressWarnings("serial")
         private com.google.protobuf.MapField attributes_;
 
         private com.google.protobuf.MapField internalGetAttributes() {
@@ -17913,7 +18088,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public boolean containsAttributes(java.lang.String key) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             return internalGetAttributes().getMap().containsKey(key);
         }
@@ -17947,9 +18122,11 @@ public final class ContextOuterClass {
          * map<string, string> attributes = 4;
          */
         @java.lang.Override
-        public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
+        public /* nullable */
+        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+        java.lang.String defaultValue) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             java.util.Map map = internalGetAttributes().getMap();
             return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -17965,7 +18142,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public java.lang.String getAttributesOrThrow(java.lang.String key) {
             if (key == null) {
-                throw new java.lang.NullPointerException();
+                throw new NullPointerException("map key");
             }
             java.util.Map map = internalGetAttributes().getMap();
             if (!map.containsKey(key)) {
@@ -17976,7 +18153,8 @@ public final class ContextOuterClass {
 
         public static final int PARENT_FIELD_NUMBER = 5;
 
-        private volatile java.lang.Object parent_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object parent_ = "";
 
         /**
          * string parent = 5;
@@ -18029,17 +18207,17 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 output.writeMessage(1, getComponentUuid());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!getTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
             }
             com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
-            if (!getParentBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -18051,20 +18229,20 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!getTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
             }
             for (java.util.Map.Entry entry : internalGetAttributes().getMap().entrySet()) {
                 com.google.protobuf.MapEntry attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
             }
-            if (!getParentBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18092,7 +18270,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getParent().equals(other.getParent()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -18118,7 +18296,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PARENT_FIELD_NUMBER;
             hash = (53 * hash) + getParent().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18236,26 +18414,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Component.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (componentUuidBuilder_ == null) {
-                    componentUuid_ = null;
-                } else {
-                    componentUuid_ = null;
+                bitField0_ = 0;
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
                     componentUuidBuilder_ = null;
                 }
                 name_ = "";
@@ -18287,49 +18458,31 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Component buildPartial() {
                 context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
-                int from_bitField0_ = bitField0_;
-                if (componentUuidBuilder_ == null) {
-                    result.componentUuid_ = componentUuid_;
-                } else {
-                    result.componentUuid_ = componentUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
-                result.type_ = type_;
-                result.attributes_ = internalGetAttributes();
-                result.attributes_.makeImmutable();
-                result.parent_ = parent_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Component result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.type_ = type_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = internalGetAttributes();
+                    result.attributes_.makeImmutable();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.parent_ = parent_;
+                }
             }
 
             @java.lang.Override
@@ -18350,18 +18503,22 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getType().isEmpty()) {
                     type_ = other.type_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
+                bitField0_ |= 0x00000008;
                 if (!other.getParent().isEmpty()) {
                     parent_ = other.parent_;
+                    bitField0_ |= 0x00000010;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18373,17 +18530,71 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Component parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    type_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    com.google.protobuf.MapEntry attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    parent_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -18398,7 +18609,7 @@ public final class ContextOuterClass {
              * @return Whether the componentUuid field is set.
              */
             public boolean hasComponentUuid() {
-                return componentUuidBuilder_ != null || componentUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18422,10 +18633,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     componentUuid_ = value;
-                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18435,10 +18647,11 @@ public final class ContextOuterClass {
             public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (componentUuidBuilder_ == null) {
                     componentUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18447,15 +18660,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
                 if (componentUuidBuilder_ == null) {
-                    if (componentUuid_ != null) {
-                        componentUuid_ = context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getComponentUuidBuilder().mergeFrom(value);
                     } else {
                         componentUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     componentUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18463,13 +18677,13 @@ public final class ContextOuterClass {
              * .context.Uuid component_uuid = 1;
              */
             public Builder clearComponentUuid() {
-                if (componentUuidBuilder_ == null) {
-                    componentUuid_ = null;
-                    onChanged();
-                } else {
-                    componentUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
                     componentUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18477,6 +18691,7 @@ public final class ContextOuterClass {
              * .context.Uuid component_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getComponentUuidFieldBuilder().getBuilder();
             }
@@ -18546,6 +18761,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18556,6 +18772,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -18571,6 +18788,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18618,6 +18836,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 type_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18628,6 +18847,7 @@ public final class ContextOuterClass {
              */
             public Builder clearType() {
                 type_ = getDefaultInstance().getType();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -18643,6 +18863,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 type_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18657,14 +18878,14 @@ public final class ContextOuterClass {
             }
 
             private com.google.protobuf.MapField internalGetMutableAttributes() {
-                onChanged();
-                ;
                 if (attributes_ == null) {
                     attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
                 }
                 if (!attributes_.isMutable()) {
                     attributes_ = attributes_.copy();
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return attributes_;
             }
 
@@ -18682,7 +18903,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public boolean containsAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 return internalGetAttributes().getMap().containsKey(key);
             }
@@ -18716,9 +18937,11 @@ public final class ContextOuterClass {
              * map<string, string> attributes = 4;
              */
             @java.lang.Override
-            public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
+            public /* nullable */
+            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+            java.lang.String defaultValue) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 java.util.Map map = internalGetAttributes().getMap();
                 return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -18734,7 +18957,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public java.lang.String getAttributesOrThrow(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 java.util.Map map = internalGetAttributes().getMap();
                 if (!map.containsKey(key)) {
@@ -18744,6 +18967,7 @@ public final class ContextOuterClass {
             }
 
             public Builder clearAttributes() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 internalGetMutableAttributes().getMutableMap().clear();
                 return this;
             }
@@ -18757,7 +18981,7 @@ public final class ContextOuterClass {
              */
             public Builder removeAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 internalGetMutableAttributes().getMutableMap().remove(key);
                 return this;
@@ -18768,6 +18992,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Deprecated
             public java.util.Map getMutableAttributes() {
+                bitField0_ |= 0x00000008;
                 return internalGetMutableAttributes().getMutableMap();
             }
 
@@ -18780,12 +19005,13 @@ public final class ContextOuterClass {
              */
             public Builder putAttributes(java.lang.String key, java.lang.String value) {
                 if (key == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map key");
                 }
                 if (value == null) {
-                    throw new java.lang.NullPointerException();
+                    throw new NullPointerException("map value");
                 }
                 internalGetMutableAttributes().getMutableMap().put(key, value);
+                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18798,6 +19024,7 @@ public final class ContextOuterClass {
              */
             public Builder putAllAttributes(java.util.Map values) {
                 internalGetMutableAttributes().getMutableMap().putAll(values);
+                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18844,6 +19071,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 parent_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18854,6 +19082,7 @@ public final class ContextOuterClass {
              */
             public Builder clearParent() {
                 parent_ = getDefaultInstance().getParent();
+                bitField0_ = (bitField0_ & ~0x00000010);
                 onChanged();
                 return this;
             }
@@ -18869,6 +19098,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 parent_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18900,7 +19130,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Component parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Component(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -18971,57 +19211,6 @@ public final class ContextOuterClass {
             return new DeviceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
         }
@@ -19033,6 +19222,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -19093,7 +19283,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19105,7 +19295,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19121,7 +19311,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19137,7 +19327,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19231,29 +19421,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19279,7 +19463,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceConfig buildPartial() {
                 context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -19289,38 +19481,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -19360,7 +19524,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -19372,17 +19536,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -19652,7 +19846,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19723,57 +19927,6 @@ public final class ContextOuterClass {
             return new DeviceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
         }
@@ -19785,6 +19938,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceIds_;
 
         /**
@@ -19845,7 +19999,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 output.writeMessage(1, deviceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19857,7 +20011,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19873,7 +20027,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
             if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19889,7 +20043,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19983,29 +20137,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20031,7 +20179,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceIdList buildPartial() {
                 context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
                 if (deviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
@@ -20041,38 +20197,10 @@ public final class ContextOuterClass {
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20112,7 +20240,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20124,17 +20252,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -20404,7 +20562,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -20475,57 +20643,6 @@ public final class ContextOuterClass {
             return new DeviceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    devices_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    devices_ = java.util.Collections.unmodifiableList(devices_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
         }
@@ -20537,6 +20654,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List devices_;
 
         /**
@@ -20597,7 +20715,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 output.writeMessage(1, devices_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -20609,7 +20727,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20625,7 +20743,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
             if (!getDevicesList().equals(other.getDevicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -20641,7 +20759,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getDevicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20735,29 +20853,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDevicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    devices_ = null;
                     devicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20783,7 +20895,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceList buildPartial() {
                 context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
                 if (devicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
@@ -20793,38 +20913,10 @@ public final class ContextOuterClass {
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20864,7 +20956,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20876,17 +20968,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
+                                    if (devicesBuilder_ == null) {
+                                        ensureDevicesIsMutable();
+                                        devices_.add(m);
+                                    } else {
+                                        devicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -21156,7 +21278,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -21236,72 +21368,6 @@ public final class ContextOuterClass {
             return new DeviceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
-                                if (deviceIds_ != null) {
-                                    subBuilder = deviceIds_.toBuilder();
-                                }
-                                deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceIds_);
-                                    deviceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpoints_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeComponents_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
         }
@@ -21338,12 +21404,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-            return getDeviceIds();
+            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
         }
 
         public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpoints_;
+        private boolean includeEndpoints_ = false;
 
         /**
          * bool include_endpoints = 2;
@@ -21356,7 +21422,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 3;
@@ -21369,7 +21435,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
 
-        private boolean includeComponents_;
+        private boolean includeComponents_ = false;
 
         /**
          * bool include_components = 4;
@@ -21407,7 +21473,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 output.writeBool(4, includeComponents_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -21428,7 +21494,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -21454,7 +21520,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeComponents() != other.getIncludeComponents())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -21476,7 +21542,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
             hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -21570,26 +21636,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (deviceIdsBuilder_ == null) {
-                    deviceIds_ = null;
-                } else {
-                    deviceIds_ = null;
+                bitField0_ = 0;
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
                     deviceIdsBuilder_ = null;
                 }
                 includeEndpoints_ = false;
@@ -21620,46 +21679,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceFilter buildPartial() {
                 context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
-                if (deviceIdsBuilder_ == null) {
-                    result.deviceIds_ = deviceIds_;
-                } else {
-                    result.deviceIds_ = deviceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpoints_ = includeEndpoints_;
-                result.includeConfigRules_ = includeConfigRules_;
-                result.includeComponents_ = includeComponents_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpoints_ = includeEndpoints_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeComponents_ = includeComponents_;
+                }
             }
 
             @java.lang.Override
@@ -21687,7 +21727,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeComponents() != false) {
                     setIncludeComponents(other.getIncludeComponents());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -21699,20 +21739,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpoints_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeComponents_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.DeviceIdList deviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 deviceIdsBuilder_;
@@ -21722,7 +21810,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceIds field is set.
              */
             public boolean hasDeviceIds() {
-                return deviceIdsBuilder_ != null || deviceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -21746,10 +21834,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceIds_ = value;
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21759,10 +21848,11 @@ public final class ContextOuterClass {
             public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21771,15 +21861,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                 if (deviceIdsBuilder_ == null) {
-                    if (deviceIds_ != null) {
-                        deviceIds_ = context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
+                        getDeviceIdsBuilder().mergeFrom(value);
                     } else {
                         deviceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -21787,13 +21878,13 @@ public final class ContextOuterClass {
              * .context.DeviceIdList device_ids = 1;
              */
             public Builder clearDeviceIds() {
-                if (deviceIdsBuilder_ == null) {
-                    deviceIds_ = null;
-                    onChanged();
-                } else {
-                    deviceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
                     deviceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -21801,6 +21892,7 @@ public final class ContextOuterClass {
              * .context.DeviceIdList device_ids = 1;
              */
             public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdsFieldBuilder().getBuilder();
             }
@@ -21845,6 +21937,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpoints(boolean value) {
                 includeEndpoints_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -21854,6 +21947,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpoints() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpoints_ = false;
                 onChanged();
                 return this;
@@ -21877,6 +21971,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -21886,6 +21981,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -21909,6 +22005,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeComponents(boolean value) {
                 includeComponents_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -21918,6 +22015,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeComponents() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeComponents_ = false;
                 onChanged();
                 return this;
@@ -21950,7 +22048,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -22046,83 +22154,6 @@ public final class ContextOuterClass {
             return new DeviceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-                                if (deviceId_ != null) {
-                                    subBuilder = deviceId_.toBuilder();
-                                }
-                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceId_);
-                                    deviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-                                if (deviceConfig_ != null) {
-                                    subBuilder = deviceConfig_.toBuilder();
-                                }
-                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceConfig_);
-                                    deviceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
         }
@@ -22159,7 +22190,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -22189,7 +22220,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return getDeviceId();
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
 
         public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
@@ -22219,7 +22250,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return getDeviceConfig();
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -22246,7 +22277,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 output.writeMessage(3, getDeviceConfig());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -22264,7 +22295,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22296,7 +22327,7 @@ public final class ContextOuterClass {
                 if (!getDeviceConfig().equals(other.getDeviceConfig()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -22320,7 +22351,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceConfig().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22414,38 +22445,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                } else {
-                    deviceId_ = null;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
-                if (deviceConfigBuilder_ == null) {
-                    deviceConfig_ = null;
-                } else {
-                    deviceConfig_ = null;
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
                     deviceConfigBuilder_ = null;
                 }
                 return this;
@@ -22473,53 +22495,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceEvent buildPartial() {
                 context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (deviceIdBuilder_ == null) {
-                    result.deviceId_ = deviceId_;
-                } else {
-                    result.deviceId_ = deviceIdBuilder_.build();
-                }
-                if (deviceConfigBuilder_ == null) {
-                    result.deviceConfig_ = deviceConfig_;
-                } else {
-                    result.deviceConfig_ = deviceConfigBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -22544,7 +22537,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceConfig()) {
                     mergeDeviceConfig(other.getDeviceConfig());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -22556,20 +22549,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.DeviceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -22579,7 +22613,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -22603,10 +22637,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22616,10 +22651,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22628,15 +22664,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -22644,13 +22681,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22658,6 +22695,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -22693,7 +22731,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return deviceIdBuilder_ != null || deviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -22717,10 +22755,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22730,10 +22769,11 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22742,15 +22782,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (deviceId_ != null) {
-                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
                     } else {
                         deviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -22758,13 +22799,13 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public Builder clearDeviceId() {
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                    onChanged();
-                } else {
-                    deviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22772,6 +22813,7 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -22807,7 +22849,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return deviceConfigBuilder_ != null || deviceConfig_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -22831,10 +22873,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22844,10 +22887,11 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22856,15 +22900,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (deviceConfig_ != null) {
-                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDeviceConfigBuilder().mergeFrom(value);
                     } else {
                         deviceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -22872,13 +22917,13 @@ public final class ContextOuterClass {
              * .context.DeviceConfig device_config = 3;
              */
             public Builder clearDeviceConfig() {
-                if (deviceConfigBuilder_ == null) {
-                    deviceConfig_ = null;
-                    onChanged();
-                } else {
-                    deviceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
                     deviceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -22886,6 +22931,7 @@ public final class ContextOuterClass {
              * .context.DeviceConfig device_config = 3;
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -22939,7 +22985,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -23005,57 +23061,6 @@ public final class ContextOuterClass {
             return new LinkId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (linkUuid_ != null) {
-                                    subBuilder = linkUuid_.toBuilder();
-                                }
-                                linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkUuid_);
-                                    linkUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
         }
@@ -23092,7 +23097,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-            return getLinkUuid();
+            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -23113,7 +23118,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 output.writeMessage(1, getLinkUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -23125,7 +23130,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23145,7 +23150,7 @@ public final class ContextOuterClass {
                 if (!getLinkUuid().equals(other.getLinkUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -23161,7 +23166,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23259,26 +23264,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (linkUuidBuilder_ == null) {
-                    linkUuid_ = null;
-                } else {
-                    linkUuid_ = null;
+                bitField0_ = 0;
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
                     linkUuidBuilder_ = null;
                 }
                 return this;
@@ -23306,43 +23304,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkId buildPartial() {
                 context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
-                if (linkUuidBuilder_ == null) {
-                    result.linkUuid_ = linkUuid_;
-                } else {
-                    result.linkUuid_ = linkUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -23361,7 +23334,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkUuid()) {
                     mergeLinkUuid(other.getLinkUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -23373,20 +23346,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid linkUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 linkUuidBuilder_;
@@ -23396,7 +23396,7 @@ public final class ContextOuterClass {
              * @return Whether the linkUuid field is set.
              */
             public boolean hasLinkUuid() {
-                return linkUuidBuilder_ != null || linkUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -23420,10 +23420,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkUuid_ = value;
-                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23433,10 +23434,11 @@ public final class ContextOuterClass {
             public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (linkUuidBuilder_ == null) {
                     linkUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23445,15 +23447,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
                 if (linkUuidBuilder_ == null) {
-                    if (linkUuid_ != null) {
-                        linkUuid_ = context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getLinkUuidBuilder().mergeFrom(value);
                     } else {
                         linkUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     linkUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -23461,13 +23464,13 @@ public final class ContextOuterClass {
              * .context.Uuid link_uuid = 1;
              */
             public Builder clearLinkUuid() {
-                if (linkUuidBuilder_ == null) {
-                    linkUuid_ = null;
-                    onChanged();
-                } else {
-                    linkUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
                     linkUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -23475,6 +23478,7 @@ public final class ContextOuterClass {
              * .context.Uuid link_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkUuidFieldBuilder().getBuilder();
             }
@@ -23528,7 +23532,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -23585,54 +23599,6 @@ public final class ContextOuterClass {
             return new LinkAttributes();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkAttributes(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                totalCapacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                usedCapacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
         }
@@ -23644,7 +23610,7 @@ public final class ContextOuterClass {
 
         public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float totalCapacityGbps_;
+        private float totalCapacityGbps_ = 0F;
 
         /**
          * float total_capacity_gbps = 1;
@@ -23657,7 +23623,7 @@ public final class ContextOuterClass {
 
         public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
 
-        private float usedCapacityGbps_;
+        private float usedCapacityGbps_ = 0F;
 
         /**
          * float used_capacity_gbps = 2;
@@ -23683,13 +23649,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (totalCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                 output.writeFloat(1, totalCapacityGbps_);
             }
-            if (usedCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                 output.writeFloat(2, usedCapacityGbps_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -23698,13 +23664,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (totalCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
             }
-            if (usedCapacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23722,7 +23688,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -23738,7 +23704,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
             hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23832,22 +23798,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 totalCapacityGbps_ = 0F;
                 usedCapacityGbps_ = 0F;
                 return this;
@@ -23875,40 +23835,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkAttributes buildPartial() {
                 context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
-                result.totalCapacityGbps_ = totalCapacityGbps_;
-                result.usedCapacityGbps_ = usedCapacityGbps_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.totalCapacityGbps_ = totalCapacityGbps_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.usedCapacityGbps_ = usedCapacityGbps_;
+                }
             }
 
             @java.lang.Override
@@ -23930,7 +23871,7 @@ public final class ContextOuterClass {
                 if (other.getUsedCapacityGbps() != 0F) {
                     setUsedCapacityGbps(other.getUsedCapacityGbps());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -23942,20 +23883,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkAttributes parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    totalCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    usedCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float totalCapacityGbps_;
 
             /**
@@ -23974,6 +23949,7 @@ public final class ContextOuterClass {
              */
             public Builder setTotalCapacityGbps(float value) {
                 totalCapacityGbps_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -23983,6 +23959,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTotalCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 totalCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -24006,6 +23983,7 @@ public final class ContextOuterClass {
              */
             public Builder setUsedCapacityGbps(float value) {
                 usedCapacityGbps_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24015,6 +23993,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearUsedCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 usedCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -24047,7 +24026,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkAttributes parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkAttributes(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -24139,6 +24128,18 @@ public final class ContextOuterClass {
          * .context.LinkAttributes attributes = 4;
          */
         context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
+
+        /**
+         * .context.LinkTypeEnum link_type = 5;
+         * @return The enum numeric value on the wire for linkType.
+         */
+        int getLinkTypeValue();
+
+        /**
+         * .context.LinkTypeEnum link_type = 5;
+         * @return The linkType.
+         */
+        context.ContextOuterClass.LinkTypeEnum getLinkType();
     }
 
     /**
@@ -24157,6 +24158,7 @@ public final class ContextOuterClass {
         private Link() {
             name_ = "";
             linkEndpointIds_ = java.util.Collections.emptyList();
+            linkType_ = 0;
         }
 
         @java.lang.Override
@@ -24165,89 +24167,6 @@ public final class ContextOuterClass {
             return new Link();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Link(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
-                                if (linkId_ != null) {
-                                    subBuilder = linkId_.toBuilder();
-                                }
-                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkId_);
-                                    linkId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    linkEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                linkEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
-                                if (attributes_ != null) {
-                                    subBuilder = attributes_.toBuilder();
-                                }
-                                attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(attributes_);
-                                    attributes_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Link_descriptor;
         }
@@ -24284,12 +24203,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return getLinkId();
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -24326,6 +24246,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List linkEndpointIds_;
 
         /**
@@ -24395,7 +24316,30 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-            return getAttributes();
+            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        }
+
+        public static final int LINK_TYPE_FIELD_NUMBER = 5;
+
+        private int linkType_ = 0;
+
+        /**
+         * .context.LinkTypeEnum link_type = 5;
+         * @return The enum numeric value on the wire for linkType.
+         */
+        @java.lang.Override
+        public int getLinkTypeValue() {
+            return linkType_;
+        }
+
+        /**
+         * .context.LinkTypeEnum link_type = 5;
+         * @return The linkType.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkTypeEnum getLinkType() {
+            context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_);
+            return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -24416,7 +24360,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(1, getLinkId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -24425,7 +24369,10 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 output.writeMessage(4, getAttributes());
             }
-            unknownFields.writeTo(output);
+            if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) {
+                output.writeEnum(5, linkType_);
+            }
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -24437,7 +24384,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -24446,7 +24393,10 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes());
             }
-            size += unknownFields.getSerializedSize();
+            if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(5, linkType_);
+            }
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -24476,7 +24426,9 @@ public final class ContextOuterClass {
                 if (!getAttributes().equals(other.getAttributes()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (linkType_ != other.linkType_)
+                return false;
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -24502,7 +24454,9 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                 hash = (53 * hash) + getAttributes().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (37 * hash) + LINK_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + linkType_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -24596,42 +24550,35 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Link.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinkEndpointIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                } else {
-                    linkId_ = null;
+                bitField0_ = 0;
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
                 name_ = "";
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    linkEndpointIds_ = null;
                     linkEndpointIdsBuilder_.clear();
                 }
-                if (attributesBuilder_ == null) {
-                    attributes_ = null;
-                } else {
-                    attributes_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
                     attributesBuilder_ = null;
                 }
+                linkType_ = 0;
                 return this;
             }
 
@@ -24657,59 +24604,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Link buildPartial() {
                 context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
-                int from_bitField0_ = bitField0_;
-                if (linkIdBuilder_ == null) {
-                    result.linkId_ = linkId_;
-                } else {
-                    result.linkId_ = linkIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
                 if (linkEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.linkEndpointIds_ = linkEndpointIds_;
                 } else {
                     result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                 }
-                if (attributesBuilder_ == null) {
-                    result.attributes_ = attributes_;
-                } else {
-                    result.attributes_ = attributesBuilder_.build();
-                }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Link result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.linkType_ = linkType_;
+                }
             }
 
             @java.lang.Override
@@ -24730,13 +24658,14 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (linkEndpointIdsBuilder_ == null) {
                     if (!other.linkEndpointIds_.isEmpty()) {
                         if (linkEndpointIds_.isEmpty()) {
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureLinkEndpointIdsIsMutable();
                             linkEndpointIds_.addAll(other.linkEndpointIds_);
@@ -24749,7 +24678,7 @@ public final class ContextOuterClass {
                             linkEndpointIdsBuilder_.dispose();
                             linkEndpointIdsBuilder_ = null;
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                         } else {
                             linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
@@ -24759,7 +24688,10 @@ public final class ContextOuterClass {
                 if (other.hasAttributes()) {
                     mergeAttributes(other.getAttributes());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                if (other.linkType_ != 0) {
+                    setLinkTypeValue(other.getLinkTypeValue());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -24771,17 +24703,75 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Link parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (linkEndpointIdsBuilder_ == null) {
+                                        ensureLinkEndpointIdsIsMutable();
+                                        linkEndpointIds_.add(m);
+                                    } else {
+                                        linkEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 40:
+                                {
+                                    linkType_ = input.readEnum();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -24796,7 +24786,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return linkIdBuilder_ != null || linkId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -24820,10 +24810,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24833,10 +24824,11 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24845,15 +24837,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (linkId_ != null) {
-                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
                     } else {
                         linkId_ = value;
                     }
-                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -24861,13 +24854,13 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 1;
              */
             public Builder clearLinkId() {
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                    onChanged();
-                } else {
-                    linkId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -24875,6 +24868,7 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 1;
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -24944,6 +24938,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24954,6 +24949,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -24969,6 +24965,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -24976,9 +24973,9 @@ public final class ContextOuterClass {
             private java.util.List linkEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     linkEndpointIds_ = new java.util.ArrayList(linkEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -25130,7 +25127,7 @@ public final class ContextOuterClass {
             public Builder clearLinkEndpointIds() {
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     linkEndpointIdsBuilder_.clear();
@@ -25204,7 +25201,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getLinkEndpointIdsFieldBuilder() {
                 if (linkEndpointIdsBuilder_ == null) {
-                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     linkEndpointIds_ = null;
                 }
                 return linkEndpointIdsBuilder_;
@@ -25219,7 +25216,7 @@ public final class ContextOuterClass {
              * @return Whether the attributes field is set.
              */
             public boolean hasAttributes() {
-                return attributesBuilder_ != null || attributes_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -25243,10 +25240,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     attributes_ = value;
-                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25256,10 +25254,11 @@ public final class ContextOuterClass {
             public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
                 if (attributesBuilder_ == null) {
                     attributes_ = builderForValue.build();
-                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25268,15 +25267,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
                 if (attributesBuilder_ == null) {
-                    if (attributes_ != null) {
-                        attributes_ = context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
+                        getAttributesBuilder().mergeFrom(value);
                     } else {
                         attributes_ = value;
                     }
-                    onChanged();
                 } else {
                     attributesBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -25284,13 +25284,13 @@ public final class ContextOuterClass {
              * .context.LinkAttributes attributes = 4;
              */
             public Builder clearAttributes() {
-                if (attributesBuilder_ == null) {
-                    attributes_ = null;
-                    onChanged();
-                } else {
-                    attributes_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
                     attributesBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -25298,6 +25298,7 @@ public final class ContextOuterClass {
              * .context.LinkAttributes attributes = 4;
              */
             public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getAttributesFieldBuilder().getBuilder();
             }
@@ -25324,6 +25325,65 @@ public final class ContextOuterClass {
                 return attributesBuilder_;
             }
 
+            private int linkType_ = 0;
+
+            /**
+             * .context.LinkTypeEnum link_type = 5;
+             * @return The enum numeric value on the wire for linkType.
+             */
+            @java.lang.Override
+            public int getLinkTypeValue() {
+                return linkType_;
+            }
+
+            /**
+             * .context.LinkTypeEnum link_type = 5;
+             * @param value The enum numeric value on the wire for linkType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLinkTypeValue(int value) {
+                linkType_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * .context.LinkTypeEnum link_type = 5;
+             * @return The linkType.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.LinkTypeEnum getLinkType() {
+                context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_);
+                return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * .context.LinkTypeEnum link_type = 5;
+             * @param value The linkType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLinkType(context.ContextOuterClass.LinkTypeEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000010;
+                linkType_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * .context.LinkTypeEnum link_type = 5;
+             * @return This builder for chaining.
+             */
+            public Builder clearLinkType() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                linkType_ = 0;
+                onChanged();
+                return this;
+            }
+
             @java.lang.Override
             public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.setUnknownFields(unknownFields);
@@ -25351,7 +25411,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Link parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Link(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -25422,57 +25492,6 @@ public final class ContextOuterClass {
             return new LinkIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    linkIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
         }
@@ -25484,6 +25503,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List linkIds_;
 
         /**
@@ -25544,7 +25564,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(1, linkIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -25556,7 +25576,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -25572,7 +25592,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -25588,7 +25608,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -25682,29 +25702,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinkIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -25730,7 +25744,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkIdList buildPartial() {
                 context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
                 if (linkIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
@@ -25740,38 +25762,10 @@ public final class ContextOuterClass {
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -25811,7 +25805,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -25823,17 +25817,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -26103,7 +26127,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -26174,57 +26208,6 @@ public final class ContextOuterClass {
             return new LinkList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    links_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    links_ = java.util.Collections.unmodifiableList(links_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
         }
@@ -26236,6 +26219,7 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List links_;
 
         /**
@@ -26296,7 +26280,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(1, links_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -26308,7 +26292,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26324,7 +26308,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -26340,7 +26324,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26434,29 +26418,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getLinksFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    links_ = null;
                     linksBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -26482,7 +26460,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkList buildPartial() {
                 context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
                 if (linksBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
@@ -26492,38 +26478,10 @@ public final class ContextOuterClass {
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -26563,7 +26521,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -26575,17 +26533,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
+                                    if (linksBuilder_ == null) {
+                                        ensureLinksIsMutable();
+                                        links_.add(m);
+                                    } else {
+                                        linksBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -26855,7 +26843,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -26934,70 +26932,6 @@ public final class ContextOuterClass {
             return new LinkEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private LinkEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
-                                if (linkId_ != null) {
-                                    subBuilder = linkId_.toBuilder();
-                                }
-                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(linkId_);
-                                    linkId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
         }
@@ -27034,7 +26968,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 2;
@@ -27064,7 +26998,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return getLinkId();
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27088,7 +27022,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(2, getLinkId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -27103,7 +27037,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27129,7 +27063,7 @@ public final class ContextOuterClass {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -27149,7 +27083,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -27243,32 +27177,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                } else {
-                    linkId_ = null;
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -27296,48 +27222,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkEvent buildPartial() {
                 context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (linkIdBuilder_ == null) {
-                    result.linkId_ = linkId_;
-                } else {
-                    result.linkId_ = linkIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -27359,7 +27258,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -27371,20 +27270,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.LinkEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -27394,7 +27327,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -27418,10 +27351,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27431,10 +27365,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27443,15 +27378,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -27459,13 +27395,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -27473,6 +27409,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -27508,7 +27445,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return linkIdBuilder_ != null || linkId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -27532,10 +27469,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27545,10 +27483,11 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27557,15 +27496,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (linkId_ != null) {
-                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
                     } else {
                         linkId_ = value;
                     }
-                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -27573,13 +27513,13 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 2;
              */
             public Builder clearLinkId() {
-                if (linkIdBuilder_ == null) {
-                    linkId_ = null;
-                    onChanged();
-                } else {
-                    linkId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
                     linkIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -27587,6 +27527,7 @@ public final class ContextOuterClass {
              * .context.LinkId link_id = 2;
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -27640,7 +27581,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new LinkEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -27723,70 +27674,6 @@ public final class ContextOuterClass {
             return new ServiceId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (serviceUuid_ != null) {
-                                    subBuilder = serviceUuid_.toBuilder();
-                                }
-                                serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceUuid_);
-                                    serviceUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
         }
@@ -27823,7 +27710,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int SERVICE_UUID_FIELD_NUMBER = 2;
@@ -27853,7 +27740,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-            return getServiceUuid();
+            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27877,7 +27764,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 output.writeMessage(2, getServiceUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -27892,7 +27779,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27918,7 +27805,7 @@ public final class ContextOuterClass {
                 if (!getServiceUuid().equals(other.getServiceUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -27938,7 +27825,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -28036,32 +27923,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
-                if (serviceUuidBuilder_ == null) {
-                    serviceUuid_ = null;
-                } else {
-                    serviceUuid_ = null;
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
                     serviceUuidBuilder_ = null;
                 }
                 return this;
@@ -28089,48 +27968,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceId buildPartial() {
                 context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
-                }
-                if (serviceUuidBuilder_ == null) {
-                    result.serviceUuid_ = serviceUuid_;
-                } else {
-                    result.serviceUuid_ = serviceUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -28152,7 +28004,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceUuid()) {
                     mergeServiceUuid(other.getServiceUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -28164,20 +28016,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -28187,7 +28073,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -28211,10 +28097,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28224,10 +28111,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28236,15 +28124,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -28252,13 +28141,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -28266,6 +28155,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -28301,7 +28191,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceUuid field is set.
              */
             public boolean hasServiceUuid() {
-                return serviceUuidBuilder_ != null || serviceUuid_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -28325,10 +28215,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceUuid_ = value;
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28338,10 +28229,11 @@ public final class ContextOuterClass {
             public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (serviceUuidBuilder_ == null) {
                     serviceUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28350,15 +28242,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
                 if (serviceUuidBuilder_ == null) {
-                    if (serviceUuid_ != null) {
-                        serviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getServiceUuidBuilder().mergeFrom(value);
                     } else {
                         serviceUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -28366,13 +28259,13 @@ public final class ContextOuterClass {
              * .context.Uuid service_uuid = 2;
              */
             public Builder clearServiceUuid() {
-                if (serviceUuidBuilder_ == null) {
-                    serviceUuid_ = null;
-                    onChanged();
-                } else {
-                    serviceUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
                     serviceUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -28380,6 +28273,7 @@ public final class ContextOuterClass {
              * .context.Uuid service_uuid = 2;
              */
             public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceUuidFieldBuilder().getBuilder();
             }
@@ -28433,7 +28327,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -28624,133 +28528,6 @@ public final class ContextOuterClass {
             return new Service();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Service(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                int rawValue = input.readEnum();
-                                serviceType_ = rawValue;
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    serviceEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                serviceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    serviceConstraints_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                serviceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
-                                if (serviceStatus_ != null) {
-                                    subBuilder = serviceStatus_.toBuilder();
-                                }
-                                serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceStatus_);
-                                    serviceStatus_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
-                                if (serviceConfig_ != null) {
-                                    subBuilder = serviceConfig_.toBuilder();
-                                }
-                                serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceConfig_);
-                                    serviceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Service_descriptor;
         }
@@ -28787,12 +28564,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -28829,7 +28607,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
 
-        private int serviceType_;
+        private int serviceType_ = 0;
 
         /**
          * .context.ServiceTypeEnum service_type = 3;
@@ -28846,13 +28624,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
             return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceEndpointIds_;
 
         /**
@@ -28897,6 +28675,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceConstraints_;
 
         /**
@@ -28966,7 +28745,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-            return getServiceStatus();
+            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
         }
 
         public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
@@ -28996,7 +28775,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-            return getServiceConfig();
+            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 8;
@@ -29026,7 +28805,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -29047,7 +28826,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(1, getServiceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -29068,7 +28847,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(8, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -29080,7 +28859,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -29101,7 +28880,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -29147,7 +28926,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -29187,7 +28966,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -29281,60 +29060,50 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Service.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServiceEndpointIdsFieldBuilder();
-                    getServiceConstraintsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                bitField0_ = 0;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 name_ = "";
                 serviceType_ = 0;
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    serviceEndpointIds_ = null;
                     serviceEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    serviceConstraints_ = null;
                     serviceConstraintsBuilder_.clear();
                 }
-                if (serviceStatusBuilder_ == null) {
-                    serviceStatus_ = null;
-                } else {
-                    serviceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
                     serviceStatusBuilder_ = null;
                 }
-                if (serviceConfigBuilder_ == null) {
-                    serviceConfig_ = null;
-                } else {
-                    serviceConfig_ = null;
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
                     serviceConfigBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -29362,79 +29131,55 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Service buildPartial() {
                 context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-                int from_bitField0_ = bitField0_;
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
-                result.serviceType_ = serviceType_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.serviceEndpointIds_ = serviceEndpointIds_;
                 } else {
                     result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
                 }
                 if (serviceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
                         serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000010);
                     }
                     result.serviceConstraints_ = serviceConstraints_;
                 } else {
                     result.serviceConstraints_ = serviceConstraintsBuilder_.build();
                 }
-                if (serviceStatusBuilder_ == null) {
-                    result.serviceStatus_ = serviceStatus_;
-                } else {
-                    result.serviceStatus_ = serviceStatusBuilder_.build();
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Service result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                 }
-                if (serviceConfigBuilder_ == null) {
-                    result.serviceConfig_ = serviceConfig_;
-                } else {
-                    result.serviceConfig_ = serviceConfigBuilder_.build();
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
                 }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.serviceType_ = serviceType_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -29455,6 +29200,7 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.serviceType_ != 0) {
@@ -29464,7 +29210,7 @@ public final class ContextOuterClass {
                     if (!other.serviceEndpointIds_.isEmpty()) {
                         if (serviceEndpointIds_.isEmpty()) {
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureServiceEndpointIdsIsMutable();
                             serviceEndpointIds_.addAll(other.serviceEndpointIds_);
@@ -29477,7 +29223,7 @@ public final class ContextOuterClass {
                             serviceEndpointIdsBuilder_.dispose();
                             serviceEndpointIdsBuilder_ = null;
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
                         } else {
                             serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
@@ -29488,7 +29234,7 @@ public final class ContextOuterClass {
                     if (!other.serviceConstraints_.isEmpty()) {
                         if (serviceConstraints_.isEmpty()) {
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                         } else {
                             ensureServiceConstraintsIsMutable();
                             serviceConstraints_.addAll(other.serviceConstraints_);
@@ -29501,7 +29247,7 @@ public final class ContextOuterClass {
                             serviceConstraintsBuilder_.dispose();
                             serviceConstraintsBuilder_ = null;
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                             serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
                         } else {
                             serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
@@ -29517,7 +29263,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -29529,17 +29275,101 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Service parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    serviceType_ = input.readEnum();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (serviceEndpointIdsBuilder_ == null) {
+                                        ensureServiceEndpointIdsIsMutable();
+                                        serviceEndpointIds_.add(m);
+                                    } else {
+                                        serviceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (serviceConstraintsBuilder_ == null) {
+                                        ensureServiceConstraintsIsMutable();
+                                        serviceConstraints_.add(m);
+                                    } else {
+                                        serviceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -29554,7 +29384,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -29578,10 +29408,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29591,10 +29422,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29603,15 +29435,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -29619,13 +29452,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 1;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -29633,6 +29466,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 1;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -29702,6 +29536,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -29712,6 +29547,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -29727,6 +29563,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -29749,6 +29586,7 @@ public final class ContextOuterClass {
              */
             public Builder setServiceTypeValue(int value) {
                 serviceType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -29759,8 +29597,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
                 return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -29773,6 +29610,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000004;
                 serviceType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -29783,6 +29621,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 serviceType_ = 0;
                 onChanged();
                 return this;
@@ -29791,9 +29630,9 @@ public final class ContextOuterClass {
             private java.util.List serviceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     serviceEndpointIds_ = new java.util.ArrayList(serviceEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -29945,7 +29784,7 @@ public final class ContextOuterClass {
             public Builder clearServiceEndpointIds() {
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     serviceEndpointIdsBuilder_.clear();
@@ -30019,7 +29858,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getServiceEndpointIdsFieldBuilder() {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     serviceEndpointIds_ = null;
                 }
                 return serviceEndpointIdsBuilder_;
@@ -30028,9 +29867,9 @@ public final class ContextOuterClass {
             private java.util.List serviceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureServiceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000010) != 0)) {
                     serviceConstraints_ = new java.util.ArrayList(serviceConstraints_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000010;
                 }
             }
 
@@ -30182,7 +30021,7 @@ public final class ContextOuterClass {
             public Builder clearServiceConstraints() {
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000010);
                     onChanged();
                 } else {
                     serviceConstraintsBuilder_.clear();
@@ -30256,7 +30095,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getServiceConstraintsFieldBuilder() {
                 if (serviceConstraintsBuilder_ == null) {
-                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                     serviceConstraints_ = null;
                 }
                 return serviceConstraintsBuilder_;
@@ -30271,7 +30110,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceStatus field is set.
              */
             public boolean hasServiceStatus() {
-                return serviceStatusBuilder_ != null || serviceStatus_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -30295,10 +30134,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceStatus_ = value;
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30308,10 +30148,11 @@ public final class ContextOuterClass {
             public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
                 if (serviceStatusBuilder_ == null) {
                     serviceStatus_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30320,15 +30161,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                 if (serviceStatusBuilder_ == null) {
-                    if (serviceStatus_ != null) {
-                        serviceStatus_ = context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
+                        getServiceStatusBuilder().mergeFrom(value);
                     } else {
                         serviceStatus_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceStatusBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -30336,13 +30178,13 @@ public final class ContextOuterClass {
              * .context.ServiceStatus service_status = 6;
              */
             public Builder clearServiceStatus() {
-                if (serviceStatusBuilder_ == null) {
-                    serviceStatus_ = null;
-                    onChanged();
-                } else {
-                    serviceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
                     serviceStatusBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30350,6 +30192,7 @@ public final class ContextOuterClass {
              * .context.ServiceStatus service_status = 6;
              */
             public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getServiceStatusFieldBuilder().getBuilder();
             }
@@ -30385,7 +30228,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceConfig field is set.
              */
             public boolean hasServiceConfig() {
-                return serviceConfigBuilder_ != null || serviceConfig_ != null;
+                return ((bitField0_ & 0x00000040) != 0);
             }
 
             /**
@@ -30409,10 +30252,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceConfig_ = value;
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30422,10 +30266,11 @@ public final class ContextOuterClass {
             public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
                 if (serviceConfigBuilder_ == null) {
                     serviceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30434,15 +30279,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                 if (serviceConfigBuilder_ == null) {
-                    if (serviceConfig_ != null) {
-                        serviceConfig_ = context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
+                        getServiceConfigBuilder().mergeFrom(value);
                     } else {
                         serviceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -30450,13 +30296,13 @@ public final class ContextOuterClass {
              * .context.ServiceConfig service_config = 7;
              */
             public Builder clearServiceConfig() {
-                if (serviceConfigBuilder_ == null) {
-                    serviceConfig_ = null;
-                    onChanged();
-                } else {
-                    serviceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000040);
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
                     serviceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30464,6 +30310,7 @@ public final class ContextOuterClass {
              * .context.ServiceConfig service_config = 7;
              */
             public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
+                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceConfigFieldBuilder().getBuilder();
             }
@@ -30499,7 +30346,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000080) != 0);
             }
 
             /**
@@ -30523,10 +30370,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30536,10 +30384,11 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30548,15 +30397,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -30564,13 +30414,13 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 8;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000080);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -30578,6 +30428,7 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 8;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000080;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -30631,7 +30482,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Service parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Service(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -30689,50 +30550,6 @@ public final class ContextOuterClass {
             return new ServiceStatus();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                serviceStatus_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
         }
@@ -30744,7 +30561,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
 
-        private int serviceStatus_;
+        private int serviceStatus_ = 0;
 
         /**
          * .context.ServiceStatusEnum service_status = 1;
@@ -30761,8 +30578,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
             return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -30784,7 +30600,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, serviceStatus_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -30796,7 +30612,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30812,7 +30628,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
             if (serviceStatus_ != other.serviceStatus_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -30826,7 +30642,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + serviceStatus_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30920,22 +30736,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 serviceStatus_ = 0;
                 return this;
             }
@@ -30962,39 +30772,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatus buildPartial() {
                 context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-                result.serviceStatus_ = serviceStatus_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceStatus_ = serviceStatus_;
+                }
             }
 
             @java.lang.Override
@@ -31013,7 +30802,7 @@ public final class ContextOuterClass {
                 if (other.serviceStatus_ != 0) {
                     setServiceStatusValue(other.getServiceStatusValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -31025,20 +30814,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceStatus parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    serviceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int serviceStatus_ = 0;
 
             /**
@@ -31057,6 +30873,7 @@ public final class ContextOuterClass {
              */
             public Builder setServiceStatusValue(int value) {
                 serviceStatus_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -31067,8 +30884,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
+                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
                 return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -31081,6 +30897,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 serviceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -31091,6 +30908,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 serviceStatus_ = 0;
                 onChanged();
                 return this;
@@ -31123,7 +30941,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceStatus(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -31194,57 +31022,6 @@ public final class ContextOuterClass {
             return new ServiceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
         }
@@ -31256,6 +31033,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -31316,7 +31094,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -31328,7 +31106,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -31344,7 +31122,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -31360,7 +31138,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -31454,29 +31232,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -31502,7 +31274,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceConfig buildPartial() {
                 context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -31512,38 +31292,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -31583,7 +31335,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -31595,17 +31347,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -31875,7 +31657,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -31946,57 +31738,6 @@ public final class ContextOuterClass {
             return new ServiceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    serviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
         }
@@ -32008,6 +31749,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List serviceIds_;
 
         /**
@@ -32068,7 +31810,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 output.writeMessage(1, serviceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -32080,7 +31822,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32096,7 +31838,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
             if (!getServiceIdsList().equals(other.getServiceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -32112,7 +31854,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32206,29 +31948,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServiceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -32254,7 +31990,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceIdList buildPartial() {
                 context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
                 if (serviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
@@ -32264,38 +32008,10 @@ public final class ContextOuterClass {
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -32335,7 +32051,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -32347,17 +32063,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (serviceIdsBuilder_ == null) {
+                                        ensureServiceIdsIsMutable();
+                                        serviceIds_.add(m);
+                                    } else {
+                                        serviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -32627,7 +32373,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -32698,57 +32454,6 @@ public final class ContextOuterClass {
             return new ServiceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    services_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                services_.add(input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    services_ = java.util.Collections.unmodifiableList(services_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
         }
@@ -32760,6 +32465,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List services_;
 
         /**
@@ -32820,7 +32526,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 output.writeMessage(1, services_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -32832,7 +32538,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32848,7 +32554,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
             if (!getServicesList().equals(other.getServicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -32864,7 +32570,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getServicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32958,29 +32664,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getServicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (servicesBuilder_ == null) {
                     services_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    services_ = null;
                     servicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -33006,7 +32706,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceList buildPartial() {
                 context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
                 if (servicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         services_ = java.util.Collections.unmodifiableList(services_);
@@ -33016,38 +32724,10 @@ public final class ContextOuterClass {
                 } else {
                     result.services_ = servicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -33087,7 +32767,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -33099,17 +32779,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
+                                    if (servicesBuilder_ == null) {
+                                        ensureServicesIsMutable();
+                                        services_.add(m);
+                                    } else {
+                                        servicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -33379,7 +33089,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -33459,72 +33179,6 @@ public final class ContextOuterClass {
             return new ServiceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
-                                if (serviceIds_ != null) {
-                                    subBuilder = serviceIds_.toBuilder();
-                                }
-                                serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceIds_);
-                                    serviceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpointIds_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConstraints_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
         }
@@ -33561,12 +33215,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-            return getServiceIds();
+            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_;
+        private boolean includeEndpointIds_ = false;
 
         /**
          * bool include_endpoint_ids = 2;
@@ -33579,7 +33233,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_;
+        private boolean includeConstraints_ = false;
 
         /**
          * bool include_constraints = 3;
@@ -33592,7 +33246,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 4;
@@ -33630,7 +33284,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(4, includeConfigRules_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -33651,7 +33305,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33677,7 +33331,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -33699,7 +33353,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33793,26 +33447,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (serviceIdsBuilder_ == null) {
-                    serviceIds_ = null;
-                } else {
-                    serviceIds_ = null;
+                bitField0_ = 0;
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
                     serviceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -33843,46 +33490,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceFilter buildPartial() {
                 context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-                if (serviceIdsBuilder_ == null) {
-                    result.serviceIds_ = serviceIds_;
-                } else {
-                    result.serviceIds_ = serviceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpointIds_ = includeEndpointIds_;
-                result.includeConstraints_ = includeConstraints_;
-                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
             }
 
             @java.lang.Override
@@ -33910,7 +33538,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -33922,20 +33550,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ServiceIdList serviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 serviceIdsBuilder_;
@@ -33945,7 +33621,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceIds field is set.
              */
             public boolean hasServiceIds() {
-                return serviceIdsBuilder_ != null || serviceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -33969,10 +33645,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceIds_ = value;
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -33982,10 +33659,11 @@ public final class ContextOuterClass {
             public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -33994,15 +33672,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
                 if (serviceIdsBuilder_ == null) {
-                    if (serviceIds_ != null) {
-                        serviceIds_ = context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
+                        getServiceIdsBuilder().mergeFrom(value);
                     } else {
                         serviceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34010,13 +33689,13 @@ public final class ContextOuterClass {
              * .context.ServiceIdList service_ids = 1;
              */
             public Builder clearServiceIds() {
-                if (serviceIdsBuilder_ == null) {
-                    serviceIds_ = null;
-                    onChanged();
-                } else {
-                    serviceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
                     serviceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34024,6 +33703,7 @@ public final class ContextOuterClass {
              * .context.ServiceIdList service_ids = 1;
              */
             public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdsFieldBuilder().getBuilder();
             }
@@ -34068,6 +33748,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -34077,6 +33758,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -34100,6 +33782,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -34109,6 +33792,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -34132,6 +33816,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -34141,6 +33826,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -34173,7 +33859,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -34252,70 +33948,6 @@ public final class ContextOuterClass {
             return new ServiceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ServiceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
         }
@@ -34352,7 +33984,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -34382,7 +34014,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -34406,7 +34038,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(2, getServiceId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -34421,7 +34053,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -34447,7 +34079,7 @@ public final class ContextOuterClass {
                 if (!getServiceId().equals(other.getServiceId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -34467,7 +34099,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -34561,32 +34193,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 return this;
@@ -34614,48 +34238,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceEvent buildPartial() {
                 context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -34677,7 +34274,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceId()) {
                     mergeServiceId(other.getServiceId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -34689,20 +34286,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ServiceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -34712,7 +34343,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -34736,10 +34367,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34749,10 +34381,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34761,15 +34394,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -34777,13 +34411,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34791,6 +34425,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -34826,7 +34461,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -34850,10 +34485,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34863,10 +34499,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34875,15 +34512,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -34891,13 +34529,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -34905,6 +34543,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -34958,7 +34597,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ServiceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -35041,70 +34690,6 @@ public final class ContextOuterClass {
             return new SliceId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
-                                if (contextId_ != null) {
-                                    subBuilder = contextId_.toBuilder();
-                                }
-                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(contextId_);
-                                    contextId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (sliceUuid_ != null) {
-                                    subBuilder = sliceUuid_.toBuilder();
-                                }
-                                sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceUuid_);
-                                    sliceUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
         }
@@ -35141,7 +34726,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return getContextId();
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
         }
 
         public static final int SLICE_UUID_FIELD_NUMBER = 2;
@@ -35171,7 +34756,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-            return getSliceUuid();
+            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -35195,7 +34780,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 output.writeMessage(2, getSliceUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -35210,7 +34795,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -35236,7 +34821,7 @@ public final class ContextOuterClass {
                 if (!getSliceUuid().equals(other.getSliceUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -35256,7 +34841,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -35354,32 +34939,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                } else {
-                    contextId_ = null;
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
-                if (sliceUuidBuilder_ == null) {
-                    sliceUuid_ = null;
-                } else {
-                    sliceUuid_ = null;
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
                     sliceUuidBuilder_ = null;
                 }
                 return this;
@@ -35407,48 +34984,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceId buildPartial() {
                 context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-                if (contextIdBuilder_ == null) {
-                    result.contextId_ = contextId_;
-                } else {
-                    result.contextId_ = contextIdBuilder_.build();
-                }
-                if (sliceUuidBuilder_ == null) {
-                    result.sliceUuid_ = sliceUuid_;
-                } else {
-                    result.sliceUuid_ = sliceUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -35470,7 +35020,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceUuid()) {
                     mergeSliceUuid(other.getSliceUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -35482,20 +35032,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_;
@@ -35505,7 +35089,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return contextIdBuilder_ != null || contextId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -35529,10 +35113,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35542,10 +35127,11 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35554,15 +35140,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (contextId_ != null) {
-                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
                     } else {
                         contextId_ = value;
                     }
-                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -35570,13 +35157,13 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public Builder clearContextId() {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = null;
-                    onChanged();
-                } else {
-                    contextId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
                     contextIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -35584,6 +35171,7 @@ public final class ContextOuterClass {
              * .context.ContextId context_id = 1;
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -35619,7 +35207,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceUuid field is set.
              */
             public boolean hasSliceUuid() {
-                return sliceUuidBuilder_ != null || sliceUuid_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -35643,10 +35231,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceUuid_ = value;
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35656,10 +35245,11 @@ public final class ContextOuterClass {
             public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (sliceUuidBuilder_ == null) {
                     sliceUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35668,15 +35258,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
                 if (sliceUuidBuilder_ == null) {
-                    if (sliceUuid_ != null) {
-                        sliceUuid_ = context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSliceUuidBuilder().mergeFrom(value);
                     } else {
                         sliceUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -35684,13 +35275,13 @@ public final class ContextOuterClass {
              * .context.Uuid slice_uuid = 2;
              */
             public Builder clearSliceUuid() {
-                if (sliceUuidBuilder_ == null) {
-                    sliceUuid_ = null;
-                    onChanged();
-                } else {
-                    sliceUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
                     sliceUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -35698,6 +35289,7 @@ public final class ContextOuterClass {
              * .context.Uuid slice_uuid = 2;
              */
             public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceUuidFieldBuilder().getBuilder();
             }
@@ -35751,7 +35343,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -35998,164 +35600,6 @@ public final class ContextOuterClass {
             return new Slice();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Slice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
-                                if (sliceId_ != null) {
-                                    subBuilder = sliceId_.toBuilder();
-                                }
-                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceId_);
-                                    sliceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    sliceEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                sliceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    sliceConstraints_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                sliceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                                    sliceServiceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                sliceServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 50:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
-                                    sliceSubsliceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000008;
-                                }
-                                sliceSubsliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
-                                if (sliceStatus_ != null) {
-                                    subBuilder = sliceStatus_.toBuilder();
-                                }
-                                sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceStatus_);
-                                    sliceStatus_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
-                                if (sliceConfig_ != null) {
-                                    subBuilder = sliceConfig_.toBuilder();
-                                }
-                                sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceConfig_);
-                                    sliceConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 74:
-                            {
-                                context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
-                                if (sliceOwner_ != null) {
-                                    subBuilder = sliceOwner_.toBuilder();
-                                }
-                                sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceOwner_);
-                                    sliceOwner_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 82:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                }
-                if (((mutable_bitField0_ & 0x00000004) != 0)) {
-                    sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000008) != 0)) {
-                    sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Slice_descriptor;
         }
@@ -36192,12 +35636,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return getSliceId();
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -36234,6 +35679,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceEndpointIds_;
 
         /**
@@ -36278,6 +35724,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceConstraints_;
 
         /**
@@ -36322,6 +35769,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceServiceIds_;
 
         /**
@@ -36366,6 +35814,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceSubsliceIds_;
 
         /**
@@ -36435,7 +35884,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-            return getSliceStatus();
+            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
         }
 
         public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
@@ -36465,7 +35914,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-            return getSliceConfig();
+            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
         }
 
         public static final int SLICE_OWNER_FIELD_NUMBER = 9;
@@ -36495,7 +35944,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-            return getSliceOwner();
+            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 10;
@@ -36525,7 +35974,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -36546,7 +35995,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(1, getSliceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -36573,7 +36022,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(10, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -36585,7 +36034,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -36612,7 +36061,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -36666,7 +36115,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -36716,7 +36165,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -36810,79 +36259,68 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Slice.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSliceEndpointIdsFieldBuilder();
-                    getSliceConstraintsFieldBuilder();
-                    getSliceServiceIdsFieldBuilder();
-                    getSliceSubsliceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                } else {
-                    sliceId_ = null;
+                bitField0_ = 0;
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
                 name_ = "";
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    sliceEndpointIds_ = null;
                     sliceEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    sliceConstraints_ = null;
                     sliceConstraintsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
+                    sliceServiceIds_ = null;
                     sliceServiceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000010);
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
                 } else {
+                    sliceSubsliceIds_ = null;
                     sliceSubsliceIdsBuilder_.clear();
                 }
-                if (sliceStatusBuilder_ == null) {
-                    sliceStatus_ = null;
-                } else {
-                    sliceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
                     sliceStatusBuilder_ = null;
                 }
-                if (sliceConfigBuilder_ == null) {
-                    sliceConfig_ = null;
-                } else {
-                    sliceConfig_ = null;
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
                     sliceConfigBuilder_ = null;
                 }
-                if (sliceOwnerBuilder_ == null) {
-                    sliceOwner_ = null;
-                } else {
-                    sliceOwner_ = null;
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
                     sliceOwnerBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -36910,101 +36348,73 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Slice buildPartial() {
                 context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
-                int from_bitField0_ = bitField0_;
-                if (sliceIdBuilder_ == null) {
-                    result.sliceId_ = sliceId_;
-                } else {
-                    result.sliceId_ = sliceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.name_ = name_;
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceEndpointIds_ = sliceEndpointIds_;
                 } else {
                     result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
                 }
                 if (sliceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.sliceConstraints_ = sliceConstraints_;
                 } else {
                     result.sliceConstraints_ = sliceConstraintsBuilder_.build();
                 }
                 if (sliceServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
                         sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000010);
                     }
                     result.sliceServiceIds_ = sliceServiceIds_;
                 } else {
                     result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
                 }
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000020) != 0)) {
                         sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000020);
                     }
                     result.sliceSubsliceIds_ = sliceSubsliceIds_;
                 } else {
                     result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
                 }
-                if (sliceStatusBuilder_ == null) {
-                    result.sliceStatus_ = sliceStatus_;
-                } else {
-                    result.sliceStatus_ = sliceStatusBuilder_.build();
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Slice result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
                 }
-                if (sliceConfigBuilder_ == null) {
-                    result.sliceConfig_ = sliceConfig_;
-                } else {
-                    result.sliceConfig_ = sliceConfigBuilder_.build();
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
                 }
-                if (sliceOwnerBuilder_ == null) {
-                    result.sliceOwner_ = sliceOwner_;
-                } else {
-                    result.sliceOwner_ = sliceOwnerBuilder_.build();
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
                 }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000200) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -37025,13 +36435,14 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (sliceEndpointIdsBuilder_ == null) {
                     if (!other.sliceEndpointIds_.isEmpty()) {
                         if (sliceEndpointIds_.isEmpty()) {
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceEndpointIdsIsMutable();
                             sliceEndpointIds_.addAll(other.sliceEndpointIds_);
@@ -37044,7 +36455,7 @@ public final class ContextOuterClass {
                             sliceEndpointIdsBuilder_.dispose();
                             sliceEndpointIdsBuilder_ = null;
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
                         } else {
                             sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
@@ -37055,7 +36466,7 @@ public final class ContextOuterClass {
                     if (!other.sliceConstraints_.isEmpty()) {
                         if (sliceConstraints_.isEmpty()) {
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSliceConstraintsIsMutable();
                             sliceConstraints_.addAll(other.sliceConstraints_);
@@ -37068,7 +36479,7 @@ public final class ContextOuterClass {
                             sliceConstraintsBuilder_.dispose();
                             sliceConstraintsBuilder_ = null;
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
                         } else {
                             sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
@@ -37079,7 +36490,7 @@ public final class ContextOuterClass {
                     if (!other.sliceServiceIds_.isEmpty()) {
                         if (sliceServiceIds_.isEmpty()) {
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                         } else {
                             ensureSliceServiceIdsIsMutable();
                             sliceServiceIds_.addAll(other.sliceServiceIds_);
@@ -37092,7 +36503,7 @@ public final class ContextOuterClass {
                             sliceServiceIdsBuilder_.dispose();
                             sliceServiceIdsBuilder_ = null;
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000010);
                             sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
                         } else {
                             sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
@@ -37103,7 +36514,7 @@ public final class ContextOuterClass {
                     if (!other.sliceSubsliceIds_.isEmpty()) {
                         if (sliceSubsliceIds_.isEmpty()) {
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                         } else {
                             ensureSliceSubsliceIdsIsMutable();
                             sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
@@ -37116,7 +36527,7 @@ public final class ContextOuterClass {
                             sliceSubsliceIdsBuilder_.dispose();
                             sliceSubsliceIdsBuilder_ = null;
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000020);
                             sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
                         } else {
                             sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
@@ -37135,7 +36546,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -37147,17 +36558,125 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Slice parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (sliceEndpointIdsBuilder_ == null) {
+                                        ensureSliceEndpointIdsIsMutable();
+                                        sliceEndpointIds_.add(m);
+                                    } else {
+                                        sliceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (sliceConstraintsBuilder_ == null) {
+                                        ensureSliceConstraintsIsMutable();
+                                        sliceConstraints_.add(m);
+                                    } else {
+                                        sliceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (sliceServiceIdsBuilder_ == null) {
+                                        ensureSliceServiceIdsIsMutable();
+                                        sliceServiceIds_.add(m);
+                                    } else {
+                                        sliceServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceSubsliceIdsBuilder_ == null) {
+                                        ensureSliceSubsliceIdsIsMutable();
+                                        sliceSubsliceIds_.add(m);
+                                    } else {
+                                        sliceSubsliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000200;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -37172,7 +36691,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return sliceIdBuilder_ != null || sliceId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -37196,10 +36715,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37209,10 +36729,11 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37221,15 +36742,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (sliceId_ != null) {
-                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
                     } else {
                         sliceId_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -37237,13 +36759,13 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 1;
              */
             public Builder clearSliceId() {
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                    onChanged();
-                } else {
-                    sliceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -37251,6 +36773,7 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 1;
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -37320,6 +36843,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37330,6 +36854,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -37345,6 +36870,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37352,9 +36878,9 @@ public final class ContextOuterClass {
             private java.util.List sliceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceEndpointIds_ = new java.util.ArrayList(sliceEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -37506,7 +37032,7 @@ public final class ContextOuterClass {
             public Builder clearSliceEndpointIds() {
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceEndpointIdsBuilder_.clear();
@@ -37580,7 +37106,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceEndpointIdsFieldBuilder() {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceEndpointIds_ = null;
                 }
                 return sliceEndpointIdsBuilder_;
@@ -37589,9 +37115,9 @@ public final class ContextOuterClass {
             private java.util.List sliceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureSliceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     sliceConstraints_ = new java.util.ArrayList(sliceConstraints_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -37743,7 +37269,7 @@ public final class ContextOuterClass {
             public Builder clearSliceConstraints() {
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     sliceConstraintsBuilder_.clear();
@@ -37817,7 +37343,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceConstraintsFieldBuilder() {
                 if (sliceConstraintsBuilder_ == null) {
-                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     sliceConstraints_ = null;
                 }
                 return sliceConstraintsBuilder_;
@@ -37826,9 +37352,9 @@ public final class ContextOuterClass {
             private java.util.List sliceServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000010) != 0)) {
                     sliceServiceIds_ = new java.util.ArrayList(sliceServiceIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000010;
                 }
             }
 
@@ -37980,7 +37506,7 @@ public final class ContextOuterClass {
             public Builder clearSliceServiceIds() {
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000010);
                     onChanged();
                 } else {
                     sliceServiceIdsBuilder_.clear();
@@ -38054,7 +37580,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceServiceIdsFieldBuilder() {
                 if (sliceServiceIdsBuilder_ == null) {
-                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceServiceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                     sliceServiceIds_ = null;
                 }
                 return sliceServiceIdsBuilder_;
@@ -38063,9 +37589,9 @@ public final class ContextOuterClass {
             private java.util.List sliceSubsliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceSubsliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000020) != 0)) {
                     sliceSubsliceIds_ = new java.util.ArrayList(sliceSubsliceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000020;
                 }
             }
 
@@ -38217,7 +37743,7 @@ public final class ContextOuterClass {
             public Builder clearSliceSubsliceIds() {
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000020);
                     onChanged();
                 } else {
                     sliceSubsliceIdsBuilder_.clear();
@@ -38291,7 +37817,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSliceSubsliceIdsFieldBuilder() {
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceSubsliceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
                     sliceSubsliceIds_ = null;
                 }
                 return sliceSubsliceIdsBuilder_;
@@ -38306,7 +37832,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceStatus field is set.
              */
             public boolean hasSliceStatus() {
-                return sliceStatusBuilder_ != null || sliceStatus_ != null;
+                return ((bitField0_ & 0x00000040) != 0);
             }
 
             /**
@@ -38330,10 +37856,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceStatus_ = value;
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38343,10 +37870,11 @@ public final class ContextOuterClass {
             public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
                 if (sliceStatusBuilder_ == null) {
                     sliceStatus_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38355,15 +37883,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
                 if (sliceStatusBuilder_ == null) {
-                    if (sliceStatus_ != null) {
-                        sliceStatus_ = context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
+                        getSliceStatusBuilder().mergeFrom(value);
                     } else {
                         sliceStatus_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceStatusBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000040;
+                onChanged();
                 return this;
             }
 
@@ -38371,13 +37900,13 @@ public final class ContextOuterClass {
              * .context.SliceStatus slice_status = 7;
              */
             public Builder clearSliceStatus() {
-                if (sliceStatusBuilder_ == null) {
-                    sliceStatus_ = null;
-                    onChanged();
-                } else {
-                    sliceStatus_ = null;
+                bitField0_ = (bitField0_ & ~0x00000040);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
                     sliceStatusBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38385,6 +37914,7 @@ public final class ContextOuterClass {
              * .context.SliceStatus slice_status = 7;
              */
             public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
+                bitField0_ |= 0x00000040;
                 onChanged();
                 return getSliceStatusFieldBuilder().getBuilder();
             }
@@ -38420,7 +37950,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceConfig field is set.
              */
             public boolean hasSliceConfig() {
-                return sliceConfigBuilder_ != null || sliceConfig_ != null;
+                return ((bitField0_ & 0x00000080) != 0);
             }
 
             /**
@@ -38444,10 +37974,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceConfig_ = value;
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38457,10 +37988,11 @@ public final class ContextOuterClass {
             public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
                 if (sliceConfigBuilder_ == null) {
                     sliceConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38469,15 +38001,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
                 if (sliceConfigBuilder_ == null) {
-                    if (sliceConfig_ != null) {
-                        sliceConfig_ = context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
+                        getSliceConfigBuilder().mergeFrom(value);
                     } else {
                         sliceConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000080;
+                onChanged();
                 return this;
             }
 
@@ -38485,13 +38018,13 @@ public final class ContextOuterClass {
              * .context.SliceConfig slice_config = 8;
              */
             public Builder clearSliceConfig() {
-                if (sliceConfigBuilder_ == null) {
-                    sliceConfig_ = null;
-                    onChanged();
-                } else {
-                    sliceConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000080);
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
                     sliceConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38499,6 +38032,7 @@ public final class ContextOuterClass {
              * .context.SliceConfig slice_config = 8;
              */
             public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
+                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceConfigFieldBuilder().getBuilder();
             }
@@ -38534,7 +38068,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceOwner field is set.
              */
             public boolean hasSliceOwner() {
-                return sliceOwnerBuilder_ != null || sliceOwner_ != null;
+                return ((bitField0_ & 0x00000100) != 0);
             }
 
             /**
@@ -38558,10 +38092,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceOwner_ = value;
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38571,10 +38106,11 @@ public final class ContextOuterClass {
             public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
                 if (sliceOwnerBuilder_ == null) {
                     sliceOwner_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38583,15 +38119,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
                 if (sliceOwnerBuilder_ == null) {
-                    if (sliceOwner_ != null) {
-                        sliceOwner_ = context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
+                        getSliceOwnerBuilder().mergeFrom(value);
                     } else {
                         sliceOwner_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceOwnerBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000100;
+                onChanged();
                 return this;
             }
 
@@ -38599,13 +38136,13 @@ public final class ContextOuterClass {
              * .context.SliceOwner slice_owner = 9;
              */
             public Builder clearSliceOwner() {
-                if (sliceOwnerBuilder_ == null) {
-                    sliceOwner_ = null;
-                    onChanged();
-                } else {
-                    sliceOwner_ = null;
+                bitField0_ = (bitField0_ & ~0x00000100);
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
                     sliceOwnerBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38613,6 +38150,7 @@ public final class ContextOuterClass {
              * .context.SliceOwner slice_owner = 9;
              */
             public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
+                bitField0_ |= 0x00000100;
                 onChanged();
                 return getSliceOwnerFieldBuilder().getBuilder();
             }
@@ -38648,7 +38186,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000200) != 0);
             }
 
             /**
@@ -38672,10 +38210,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38685,10 +38224,11 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38697,15 +38237,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000200;
+                onChanged();
                 return this;
             }
 
@@ -38713,13 +38254,13 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 10;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000200);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -38727,6 +38268,7 @@ public final class ContextOuterClass {
              * .context.Timestamp timestamp = 10;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000200;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -38780,7 +38322,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Slice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Slice(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -38855,63 +38407,6 @@ public final class ContextOuterClass {
             return new SliceOwner();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceOwner(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (ownerUuid_ != null) {
-                                    subBuilder = ownerUuid_.toBuilder();
-                                }
-                                ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(ownerUuid_);
-                                    ownerUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                ownerString_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
         }
@@ -38948,12 +38443,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-            return getOwnerUuid();
+            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
         }
 
         public static final int OWNER_STRING_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object ownerString_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object ownerString_ = "";
 
         /**
          * string owner_string = 2;
@@ -39006,10 +38502,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 output.writeMessage(1, getOwnerUuid());
             }
-            if (!getOwnerStringBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -39021,10 +38517,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
             }
-            if (!getOwnerStringBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39046,7 +38542,7 @@ public final class ContextOuterClass {
             }
             if (!getOwnerString().equals(other.getOwnerString()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -39064,7 +38560,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
             hash = (53 * hash) + getOwnerString().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39158,26 +38654,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (ownerUuidBuilder_ == null) {
-                    ownerUuid_ = null;
-                } else {
-                    ownerUuid_ = null;
+                bitField0_ = 0;
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
                     ownerUuidBuilder_ = null;
                 }
                 ownerString_ = "";
@@ -39206,44 +38695,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceOwner buildPartial() {
                 context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-                if (ownerUuidBuilder_ == null) {
-                    result.ownerUuid_ = ownerUuid_;
-                } else {
-                    result.ownerUuid_ = ownerUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.ownerString_ = ownerString_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ownerString_ = ownerString_;
+                }
             }
 
             @java.lang.Override
@@ -39264,9 +38730,10 @@ public final class ContextOuterClass {
                 }
                 if (!other.getOwnerString().isEmpty()) {
                     ownerString_ = other.ownerString_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -39278,20 +38745,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceOwner parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    ownerString_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid ownerUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 ownerUuidBuilder_;
@@ -39301,7 +38802,7 @@ public final class ContextOuterClass {
              * @return Whether the ownerUuid field is set.
              */
             public boolean hasOwnerUuid() {
-                return ownerUuidBuilder_ != null || ownerUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -39325,10 +38826,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ownerUuid_ = value;
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39338,10 +38840,11 @@ public final class ContextOuterClass {
             public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (ownerUuidBuilder_ == null) {
                     ownerUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39350,15 +38853,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
                 if (ownerUuidBuilder_ == null) {
-                    if (ownerUuid_ != null) {
-                        ownerUuid_ = context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getOwnerUuidBuilder().mergeFrom(value);
                     } else {
                         ownerUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     ownerUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -39366,13 +38870,13 @@ public final class ContextOuterClass {
              * .context.Uuid owner_uuid = 1;
              */
             public Builder clearOwnerUuid() {
-                if (ownerUuidBuilder_ == null) {
-                    ownerUuid_ = null;
-                    onChanged();
-                } else {
-                    ownerUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
                     ownerUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -39380,6 +38884,7 @@ public final class ContextOuterClass {
              * .context.Uuid owner_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOwnerUuidFieldBuilder().getBuilder();
             }
@@ -39449,6 +38954,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ownerString_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -39459,6 +38965,7 @@ public final class ContextOuterClass {
              */
             public Builder clearOwnerString() {
                 ownerString_ = getDefaultInstance().getOwnerString();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -39474,6 +38981,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ownerString_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -39505,7 +39013,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceOwner parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceOwner(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -39563,50 +39081,6 @@ public final class ContextOuterClass {
             return new SliceStatus();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                sliceStatus_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
         }
@@ -39618,7 +39092,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_STATUS_FIELD_NUMBER = 1;
 
-        private int sliceStatus_;
+        private int sliceStatus_ = 0;
 
         /**
          * .context.SliceStatusEnum slice_status = 1;
@@ -39635,8 +39109,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
             return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -39658,7 +39131,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, sliceStatus_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -39670,7 +39143,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39686,7 +39159,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
             if (sliceStatus_ != other.sliceStatus_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -39700,7 +39173,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + sliceStatus_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39794,22 +39267,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 sliceStatus_ = 0;
                 return this;
             }
@@ -39836,39 +39303,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceStatus buildPartial() {
                 context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-                result.sliceStatus_ = sliceStatus_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceStatus_ = sliceStatus_;
+                }
             }
 
             @java.lang.Override
@@ -39887,7 +39333,7 @@ public final class ContextOuterClass {
                 if (other.sliceStatus_ != 0) {
                     setSliceStatusValue(other.getSliceStatusValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -39899,20 +39345,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceStatus parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    sliceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int sliceStatus_ = 0;
 
             /**
@@ -39931,6 +39404,7 @@ public final class ContextOuterClass {
              */
             public Builder setSliceStatusValue(int value) {
                 sliceStatus_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -39941,8 +39415,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
+                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
                 return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -39955,6 +39428,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 sliceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -39965,6 +39439,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSliceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 sliceStatus_ = 0;
                 onChanged();
                 return this;
@@ -39997,7 +39472,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceStatus(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -40068,57 +39553,6 @@ public final class ContextOuterClass {
             return new SliceConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    configRules_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
         }
@@ -40130,6 +39564,7 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List configRules_;
 
         /**
@@ -40190,7 +39625,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -40202,7 +39637,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40218,7 +39653,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -40234,7 +39669,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40328,29 +39763,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConfigRulesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -40376,7 +39805,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceConfig buildPartial() {
                 context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -40386,38 +39823,10 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -40457,7 +39866,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -40469,17 +39878,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -40749,7 +40188,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -40820,57 +40269,6 @@ public final class ContextOuterClass {
             return new SliceIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    sliceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
         }
@@ -40882,6 +40280,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List sliceIds_;
 
         /**
@@ -40942,7 +40341,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 output.writeMessage(1, sliceIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -40954,7 +40353,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40970,7 +40369,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
             if (!getSliceIdsList().equals(other.getSliceIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -40986,7 +40385,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41080,29 +40479,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSliceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -41128,7 +40521,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceIdList buildPartial() {
                 context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
                 if (sliceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
@@ -41138,38 +40539,10 @@ public final class ContextOuterClass {
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -41209,7 +40582,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -41221,17 +40594,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceIdsBuilder_ == null) {
+                                        ensureSliceIdsIsMutable();
+                                        sliceIds_.add(m);
+                                    } else {
+                                        sliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -41501,7 +40904,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -41572,57 +40985,6 @@ public final class ContextOuterClass {
             return new SliceList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    slices_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                slices_.add(input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    slices_ = java.util.Collections.unmodifiableList(slices_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
         }
@@ -41634,6 +40996,7 @@ public final class ContextOuterClass {
 
         public static final int SLICES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List slices_;
 
         /**
@@ -41694,7 +41057,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 output.writeMessage(1, slices_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -41706,7 +41069,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -41722,7 +41085,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
             if (!getSlicesList().equals(other.getSlicesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -41738,7 +41101,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICES_FIELD_NUMBER;
                 hash = (53 * hash) + getSlicesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41832,29 +41195,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSlicesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (slicesBuilder_ == null) {
                     slices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    slices_ = null;
                     slicesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -41880,7 +41237,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceList buildPartial() {
                 context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
                 if (slicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         slices_ = java.util.Collections.unmodifiableList(slices_);
@@ -41890,38 +41255,10 @@ public final class ContextOuterClass {
                 } else {
                     result.slices_ = slicesBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -41961,7 +41298,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -41973,17 +41310,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
+                                    if (slicesBuilder_ == null) {
+                                        ensureSlicesIsMutable();
+                                        slices_.add(m);
+                                    } else {
+                                        slicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -42253,7 +41620,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -42345,82 +41722,6 @@ public final class ContextOuterClass {
             return new SliceFilter();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
-                                if (sliceIds_ != null) {
-                                    subBuilder = sliceIds_.toBuilder();
-                                }
-                                sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceIds_);
-                                    sliceIds_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                includeEndpointIds_ = input.readBool();
-                                break;
-                            }
-                        case 24:
-                            {
-                                includeConstraints_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeServiceIds_ = input.readBool();
-                                break;
-                            }
-                        case 40:
-                            {
-                                includeSubsliceIds_ = input.readBool();
-                                break;
-                            }
-                        case 48:
-                            {
-                                includeConfigRules_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
         }
@@ -42457,12 +41758,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-            return getSliceIds();
+            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_;
+        private boolean includeEndpointIds_ = false;
 
         /**
          * bool include_endpoint_ids = 2;
@@ -42475,7 +41776,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_;
+        private boolean includeConstraints_ = false;
 
         /**
          * bool include_constraints = 3;
@@ -42488,7 +41789,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        private boolean includeServiceIds_;
+        private boolean includeServiceIds_ = false;
 
         /**
          * bool include_service_ids = 4;
@@ -42501,7 +41802,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
 
-        private boolean includeSubsliceIds_;
+        private boolean includeSubsliceIds_ = false;
 
         /**
          * bool include_subslice_ids = 5;
@@ -42514,7 +41815,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
 
-        private boolean includeConfigRules_;
+        private boolean includeConfigRules_ = false;
 
         /**
          * bool include_config_rules = 6;
@@ -42558,7 +41859,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(6, includeConfigRules_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -42585,7 +41886,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42615,7 +41916,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -42641,7 +41942,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -42735,26 +42036,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (sliceIdsBuilder_ == null) {
-                    sliceIds_ = null;
-                } else {
-                    sliceIds_ = null;
+                bitField0_ = 0;
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
                     sliceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -42787,48 +42081,33 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceFilter buildPartial() {
                 context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-                if (sliceIdsBuilder_ == null) {
-                    result.sliceIds_ = sliceIds_;
-                } else {
-                    result.sliceIds_ = sliceIdsBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.includeEndpointIds_ = includeEndpointIds_;
-                result.includeConstraints_ = includeConstraints_;
-                result.includeServiceIds_ = includeServiceIds_;
-                result.includeSubsliceIds_ = includeSubsliceIds_;
-                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeServiceIds_ = includeServiceIds_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeSubsliceIds_ = includeSubsliceIds_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
             }
 
             @java.lang.Override
@@ -42862,7 +42141,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -42874,20 +42153,82 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceFilter parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeServiceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeSubsliceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.SliceIdList sliceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3 sliceIdsBuilder_;
@@ -42897,7 +42238,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceIds field is set.
              */
             public boolean hasSliceIds() {
-                return sliceIdsBuilder_ != null || sliceIds_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -42921,10 +42262,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceIds_ = value;
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42934,10 +42276,11 @@ public final class ContextOuterClass {
             public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42946,15 +42289,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
                 if (sliceIdsBuilder_ == null) {
-                    if (sliceIds_ != null) {
-                        sliceIds_ = context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
+                        getSliceIdsBuilder().mergeFrom(value);
                     } else {
                         sliceIds_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -42962,13 +42306,13 @@ public final class ContextOuterClass {
              * .context.SliceIdList slice_ids = 1;
              */
             public Builder clearSliceIds() {
-                if (sliceIdsBuilder_ == null) {
-                    sliceIds_ = null;
-                    onChanged();
-                } else {
-                    sliceIds_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
                     sliceIdsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -42976,6 +42320,7 @@ public final class ContextOuterClass {
              * .context.SliceIdList slice_ids = 1;
              */
             public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdsFieldBuilder().getBuilder();
             }
@@ -43020,6 +42365,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -43029,6 +42375,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -43052,6 +42399,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -43061,6 +42409,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -43084,6 +42433,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeServiceIds(boolean value) {
                 includeServiceIds_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -43093,6 +42443,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeServiceIds() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeServiceIds_ = false;
                 onChanged();
                 return this;
@@ -43116,6 +42467,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeSubsliceIds(boolean value) {
                 includeSubsliceIds_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -43125,6 +42477,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeSubsliceIds() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 includeSubsliceIds_ = false;
                 onChanged();
                 return this;
@@ -43148,6 +42501,7 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -43157,6 +42511,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000020);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -43189,7 +42544,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceFilter(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -43268,70 +42633,6 @@ public final class ContextOuterClass {
             return new SliceEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SliceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
-                                if (sliceId_ != null) {
-                                    subBuilder = sliceId_.toBuilder();
-                                }
-                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(sliceId_);
-                                    sliceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
         }
@@ -43368,7 +42669,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 2;
@@ -43398,7 +42699,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return getSliceId();
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -43422,7 +42723,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(2, getSliceId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -43437,7 +42738,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -43463,7 +42764,7 @@ public final class ContextOuterClass {
                 if (!getSliceId().equals(other.getSliceId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -43483,7 +42784,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43577,32 +42878,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                } else {
-                    sliceId_ = null;
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
                 return this;
@@ -43630,48 +42923,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceEvent buildPartial() {
                 context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (sliceIdBuilder_ == null) {
-                    result.sliceId_ = sliceId_;
-                } else {
-                    result.sliceId_ = sliceIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -43693,7 +42959,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceId()) {
                     mergeSliceId(other.getSliceId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -43705,20 +42971,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.SliceEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -43728,7 +43028,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -43752,10 +43052,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43765,10 +43066,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43777,15 +43079,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -43793,13 +43096,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -43807,6 +43110,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -43842,7 +43146,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return sliceIdBuilder_ != null || sliceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -43866,10 +43170,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43879,10 +43184,11 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43891,15 +43197,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (sliceId_ != null) {
-                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
                     } else {
                         sliceId_ = value;
                     }
-                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -43907,13 +43214,13 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 2;
              */
             public Builder clearSliceId() {
-                if (sliceIdBuilder_ == null) {
-                    sliceId_ = null;
-                    onChanged();
-                } else {
-                    sliceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
                     sliceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -43921,6 +43228,7 @@ public final class ContextOuterClass {
              * .context.SliceId slice_id = 2;
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -43974,7 +43282,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SliceEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -44040,57 +43358,6 @@ public final class ContextOuterClass {
             return new ConnectionId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (connectionUuid_ != null) {
-                                    subBuilder = connectionUuid_.toBuilder();
-                                }
-                                connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionUuid_);
-                                    connectionUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
         }
@@ -44127,7 +43394,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-            return getConnectionUuid();
+            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -44148,7 +43415,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 output.writeMessage(1, getConnectionUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -44160,7 +43427,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44180,7 +43447,7 @@ public final class ContextOuterClass {
                 if (!getConnectionUuid().equals(other.getConnectionUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -44196,7 +43463,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44294,26 +43561,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (connectionUuidBuilder_ == null) {
-                    connectionUuid_ = null;
-                } else {
-                    connectionUuid_ = null;
+                bitField0_ = 0;
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
                     connectionUuidBuilder_ = null;
                 }
                 return this;
@@ -44341,43 +43601,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionId buildPartial() {
                 context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-                if (connectionUuidBuilder_ == null) {
-                    result.connectionUuid_ = connectionUuid_;
-                } else {
-                    result.connectionUuid_ = connectionUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -44396,7 +43631,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionUuid()) {
                     mergeConnectionUuid(other.getConnectionUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -44408,20 +43643,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid connectionUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3 connectionUuidBuilder_;
@@ -44431,7 +43693,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionUuid field is set.
              */
             public boolean hasConnectionUuid() {
-                return connectionUuidBuilder_ != null || connectionUuid_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -44455,10 +43717,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionUuid_ = value;
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44468,10 +43731,11 @@ public final class ContextOuterClass {
             public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (connectionUuidBuilder_ == null) {
                     connectionUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44480,15 +43744,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
                 if (connectionUuidBuilder_ == null) {
-                    if (connectionUuid_ != null) {
-                        connectionUuid_ = context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getConnectionUuidBuilder().mergeFrom(value);
                     } else {
                         connectionUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -44496,13 +43761,13 @@ public final class ContextOuterClass {
              * .context.Uuid connection_uuid = 1;
              */
             public Builder clearConnectionUuid() {
-                if (connectionUuidBuilder_ == null) {
-                    connectionUuid_ = null;
-                    onChanged();
-                } else {
-                    connectionUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
                     connectionUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -44510,6 +43775,7 @@ public final class ContextOuterClass {
              * .context.Uuid connection_uuid = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionUuidFieldBuilder().getBuilder();
             }
@@ -44563,7 +43829,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -44621,50 +43897,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L0();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L0(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                lspSymbolicName_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
         }
@@ -44676,7 +43908,8 @@ public final class ContextOuterClass {
 
         public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object lspSymbolicName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object lspSymbolicName_ = "";
 
         /**
          * string lsp_symbolic_name = 1;
@@ -44726,10 +43959,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getLspSymbolicNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -44738,10 +43971,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getLspSymbolicNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44757,7 +43990,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
             if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -44771,7 +44004,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
             hash = (53 * hash) + getLspSymbolicName().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44865,22 +44098,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 lspSymbolicName_ = "";
                 return this;
             }
@@ -44907,39 +44134,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-                result.lspSymbolicName_ = lspSymbolicName_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.lspSymbolicName_ = lspSymbolicName_;
+                }
             }
 
             @java.lang.Override
@@ -44957,9 +44163,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getLspSymbolicName().isEmpty()) {
                     lspSymbolicName_ = other.lspSymbolicName_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -44971,20 +44178,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    lspSymbolicName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object lspSymbolicName_ = "";
 
             /**
@@ -45028,6 +44262,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45038,6 +44273,7 @@ public final class ContextOuterClass {
              */
             public Builder clearLspSymbolicName() {
                 lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -45053,6 +44289,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45084,7 +44321,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L0 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L0(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -45179,76 +44426,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L2();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L2(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                srcMacAddress_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                dstMacAddress_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                etherType_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                vlanId_ = input.readUInt32();
-                                break;
-                            }
-                        case 40:
-                            {
-                                mplsLabel_ = input.readUInt32();
-                                break;
-                            }
-                        case 48:
-                            {
-                                mplsTrafficClass_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
         }
@@ -45260,7 +44437,8 @@ public final class ContextOuterClass {
 
         public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object srcMacAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcMacAddress_ = "";
 
         /**
          * string src_mac_address = 1;
@@ -45297,7 +44475,8 @@ public final class ContextOuterClass {
 
         public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object dstMacAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstMacAddress_ = "";
 
         /**
          * string dst_mac_address = 2;
@@ -45334,7 +44513,7 @@ public final class ContextOuterClass {
 
         public static final int ETHER_TYPE_FIELD_NUMBER = 3;
 
-        private int etherType_;
+        private int etherType_ = 0;
 
         /**
          * uint32 ether_type = 3;
@@ -45347,7 +44526,7 @@ public final class ContextOuterClass {
 
         public static final int VLAN_ID_FIELD_NUMBER = 4;
 
-        private int vlanId_;
+        private int vlanId_ = 0;
 
         /**
          * uint32 vlan_id = 4;
@@ -45360,7 +44539,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_LABEL_FIELD_NUMBER = 5;
 
-        private int mplsLabel_;
+        private int mplsLabel_ = 0;
 
         /**
          * uint32 mpls_label = 5;
@@ -45373,7 +44552,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
 
-        private int mplsTrafficClass_;
+        private int mplsTrafficClass_ = 0;
 
         /**
          * uint32 mpls_traffic_class = 6;
@@ -45399,10 +44578,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getSrcMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
             }
-            if (!getDstMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -45417,7 +44596,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 output.writeUInt32(6, mplsTrafficClass_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -45426,10 +44605,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getSrcMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
             }
-            if (!getDstMacAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -45444,7 +44623,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -45470,7 +44649,7 @@ public final class ContextOuterClass {
                 return false;
             if (getMplsTrafficClass() != other.getMplsTrafficClass())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -45494,7 +44673,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getMplsLabel();
             hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
             hash = (53 * hash) + getMplsTrafficClass();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -45588,22 +44767,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcMacAddress_ = "";
                 dstMacAddress_ = "";
                 etherType_ = 0;
@@ -45635,44 +44808,33 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
-                result.srcMacAddress_ = srcMacAddress_;
-                result.dstMacAddress_ = dstMacAddress_;
-                result.etherType_ = etherType_;
-                result.vlanId_ = vlanId_;
-                result.mplsLabel_ = mplsLabel_;
-                result.mplsTrafficClass_ = mplsTrafficClass_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcMacAddress_ = srcMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstMacAddress_ = dstMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.etherType_ = etherType_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.vlanId_ = vlanId_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.mplsLabel_ = mplsLabel_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.mplsTrafficClass_ = mplsTrafficClass_;
+                }
             }
 
             @java.lang.Override
@@ -45690,10 +44852,12 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcMacAddress().isEmpty()) {
                     srcMacAddress_ = other.srcMacAddress_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstMacAddress().isEmpty()) {
                     dstMacAddress_ = other.dstMacAddress_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getEtherType() != 0) {
@@ -45708,7 +44872,7 @@ public final class ContextOuterClass {
                 if (other.getMplsTrafficClass() != 0) {
                     setMplsTrafficClass(other.getMplsTrafficClass());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -45720,20 +44884,82 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    srcMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    etherType_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    vlanId_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    mplsLabel_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    mplsTrafficClass_ = input.readUInt32();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object srcMacAddress_ = "";
 
             /**
@@ -45777,6 +45003,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45787,6 +45014,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcMacAddress() {
                 srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -45802,6 +45030,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45849,6 +45078,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45859,6 +45089,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDstMacAddress() {
                 dstMacAddress_ = getDefaultInstance().getDstMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -45874,6 +45105,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45896,6 +45128,7 @@ public final class ContextOuterClass {
              */
             public Builder setEtherType(int value) {
                 etherType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45905,6 +45138,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEtherType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 etherType_ = 0;
                 onChanged();
                 return this;
@@ -45928,6 +45162,7 @@ public final class ContextOuterClass {
              */
             public Builder setVlanId(int value) {
                 vlanId_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45937,6 +45172,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearVlanId() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 vlanId_ = 0;
                 onChanged();
                 return this;
@@ -45960,6 +45196,7 @@ public final class ContextOuterClass {
              */
             public Builder setMplsLabel(int value) {
                 mplsLabel_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -45969,6 +45206,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsLabel() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 mplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -45992,6 +45230,7 @@ public final class ContextOuterClass {
              */
             public Builder setMplsTrafficClass(int value) {
                 mplsTrafficClass_ = value;
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -46001,6 +45240,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsTrafficClass() {
+                bitField0_ = (bitField0_ & ~0x00000020);
                 mplsTrafficClass_ = 0;
                 onChanged();
                 return this;
@@ -46033,7 +45273,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L2 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L2(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -46122,71 +45372,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L3();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L3(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                srcIpAddress_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                dstIpAddress_ = s;
-                                break;
-                            }
-                        case 24:
-                            {
-                                dscp_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                protocol_ = input.readUInt32();
-                                break;
-                            }
-                        case 40:
-                            {
-                                ttl_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
         }
@@ -46198,7 +45383,8 @@ public final class ContextOuterClass {
 
         public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object srcIpAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcIpAddress_ = "";
 
         /**
          * string src_ip_address = 1;
@@ -46235,7 +45421,8 @@ public final class ContextOuterClass {
 
         public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object dstIpAddress_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstIpAddress_ = "";
 
         /**
          * string dst_ip_address = 2;
@@ -46272,7 +45459,7 @@ public final class ContextOuterClass {
 
         public static final int DSCP_FIELD_NUMBER = 3;
 
-        private int dscp_;
+        private int dscp_ = 0;
 
         /**
          * uint32 dscp = 3;
@@ -46285,7 +45472,7 @@ public final class ContextOuterClass {
 
         public static final int PROTOCOL_FIELD_NUMBER = 4;
 
-        private int protocol_;
+        private int protocol_ = 0;
 
         /**
          * uint32 protocol = 4;
@@ -46298,7 +45485,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 5;
 
-        private int ttl_;
+        private int ttl_ = 0;
 
         /**
          * uint32 ttl = 5;
@@ -46324,10 +45511,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getSrcIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
             }
-            if (!getDstIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -46339,7 +45526,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(5, ttl_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -46348,10 +45535,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getSrcIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
             }
-            if (!getDstIpAddressBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -46363,7 +45550,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -46387,7 +45574,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -46409,7 +45596,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getProtocol();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -46503,22 +45690,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcIpAddress_ = "";
                 dstIpAddress_ = "";
                 dscp_ = 0;
@@ -46549,43 +45730,30 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-                result.srcIpAddress_ = srcIpAddress_;
-                result.dstIpAddress_ = dstIpAddress_;
-                result.dscp_ = dscp_;
-                result.protocol_ = protocol_;
-                result.ttl_ = ttl_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcIpAddress_ = srcIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstIpAddress_ = dstIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.dscp_ = dscp_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.protocol_ = protocol_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.ttl_ = ttl_;
+                }
             }
 
             @java.lang.Override
@@ -46603,10 +45771,12 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcIpAddress().isEmpty()) {
                     srcIpAddress_ = other.srcIpAddress_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstIpAddress().isEmpty()) {
                     dstIpAddress_ = other.dstIpAddress_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getDscp() != 0) {
@@ -46618,7 +45788,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -46630,20 +45800,75 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    srcIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    dscp_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    protocol_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object srcIpAddress_ = "";
 
             /**
@@ -46687,6 +45912,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -46697,6 +45923,7 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcIpAddress() {
                 srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -46712,6 +45939,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -46759,6 +45987,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -46769,6 +45998,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDstIpAddress() {
                 dstIpAddress_ = getDefaultInstance().getDstIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -46784,6 +46014,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -46806,6 +46037,7 @@ public final class ContextOuterClass {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -46815,6 +46047,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -46838,6 +46071,7 @@ public final class ContextOuterClass {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -46847,6 +46081,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -46870,6 +46105,7 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -46879,6 +46115,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -46911,7 +46148,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L3 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L3(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -46980,64 +46227,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L4();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings_L4(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                srcPort_ = input.readUInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                dstPort_ = input.readUInt32();
-                                break;
-                            }
-                        case 24:
-                            {
-                                tcpFlags_ = input.readUInt32();
-                                break;
-                            }
-                        case 32:
-                            {
-                                ttl_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
         }
@@ -47049,7 +46238,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_PORT_FIELD_NUMBER = 1;
 
-        private int srcPort_;
+        private int srcPort_ = 0;
 
         /**
          * uint32 src_port = 1;
@@ -47062,7 +46251,7 @@ public final class ContextOuterClass {
 
         public static final int DST_PORT_FIELD_NUMBER = 2;
 
-        private int dstPort_;
+        private int dstPort_ = 0;
 
         /**
          * uint32 dst_port = 2;
@@ -47075,7 +46264,7 @@ public final class ContextOuterClass {
 
         public static final int TCP_FLAGS_FIELD_NUMBER = 3;
 
-        private int tcpFlags_;
+        private int tcpFlags_ = 0;
 
         /**
          * uint32 tcp_flags = 3;
@@ -47088,7 +46277,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 4;
 
-        private int ttl_;
+        private int ttl_ = 0;
 
         /**
          * uint32 ttl = 4;
@@ -47126,7 +46315,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(4, ttl_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -47147,7 +46336,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47169,7 +46358,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -47189,7 +46378,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getTcpFlags();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -47283,22 +46472,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 srcPort_ = 0;
                 dstPort_ = 0;
                 tcpFlags_ = 0;
@@ -47328,42 +46511,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-                result.srcPort_ = srcPort_;
-                result.dstPort_ = dstPort_;
-                result.tcpFlags_ = tcpFlags_;
-                result.ttl_ = ttl_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcPort_ = srcPort_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstPort_ = dstPort_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.tcpFlags_ = tcpFlags_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.ttl_ = ttl_;
+                }
             }
 
             @java.lang.Override
@@ -47391,7 +46559,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -47403,20 +46571,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    srcPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    dstPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    tcpFlags_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int srcPort_;
 
             /**
@@ -47435,6 +46651,7 @@ public final class ContextOuterClass {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -47444,6 +46661,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -47467,6 +46685,7 @@ public final class ContextOuterClass {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -47476,6 +46695,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -47499,6 +46719,7 @@ public final class ContextOuterClass {
              */
             public Builder setTcpFlags(int value) {
                 tcpFlags_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -47508,6 +46729,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTcpFlags() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 tcpFlags_ = 0;
                 onChanged();
                 return this;
@@ -47531,6 +46753,7 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -47540,6 +46763,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -47572,7 +46796,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L4 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings_L4(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -47685,96 +46919,6 @@ public final class ContextOuterClass {
             return new ConnectionSettings();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
-                                if (l0_ != null) {
-                                    subBuilder = l0_.toBuilder();
-                                }
-                                l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l0_);
-                                    l0_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
-                                if (l2_ != null) {
-                                    subBuilder = l2_.toBuilder();
-                                }
-                                l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l2_);
-                                    l2_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
-                                if (l3_ != null) {
-                                    subBuilder = l3_.toBuilder();
-                                }
-                                l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l3_);
-                                    l3_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
-                                if (l4_ != null) {
-                                    subBuilder = l4_.toBuilder();
-                                }
-                                l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(l4_);
-                                    l4_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
         }
@@ -47811,7 +46955,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-            return getL0();
+            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
         }
 
         public static final int L2_FIELD_NUMBER = 2;
@@ -47841,7 +46985,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-            return getL2();
+            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
         }
 
         public static final int L3_FIELD_NUMBER = 3;
@@ -47871,7 +47015,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-            return getL3();
+            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
         }
 
         public static final int L4_FIELD_NUMBER = 4;
@@ -47901,7 +47045,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-            return getL4();
+            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -47931,7 +47075,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 output.writeMessage(4, getL4());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -47952,7 +47096,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47990,7 +47134,7 @@ public final class ContextOuterClass {
                 if (!getL4().equals(other.getL4()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -48018,7 +47162,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + L4_FIELD_NUMBER;
                 hash = (53 * hash) + getL4().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -48112,44 +47256,34 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (l0Builder_ == null) {
-                    l0_ = null;
-                } else {
-                    l0_ = null;
+                bitField0_ = 0;
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
                     l0Builder_ = null;
                 }
-                if (l2Builder_ == null) {
-                    l2_ = null;
-                } else {
-                    l2_ = null;
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
                     l2Builder_ = null;
                 }
-                if (l3Builder_ == null) {
-                    l3_ = null;
-                } else {
-                    l3_ = null;
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
                     l3Builder_ = null;
                 }
-                if (l4Builder_ == null) {
-                    l4_ = null;
-                } else {
-                    l4_ = null;
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
                     l4Builder_ = null;
                 }
                 return this;
@@ -48177,58 +47311,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings buildPartial() {
                 context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-                if (l0Builder_ == null) {
-                    result.l0_ = l0_;
-                } else {
-                    result.l0_ = l0Builder_.build();
-                }
-                if (l2Builder_ == null) {
-                    result.l2_ = l2_;
-                } else {
-                    result.l2_ = l2Builder_.build();
-                }
-                if (l3Builder_ == null) {
-                    result.l3_ = l3_;
-                } else {
-                    result.l3_ = l3Builder_.build();
-                }
-                if (l4Builder_ == null) {
-                    result.l4_ = l4_;
-                } else {
-                    result.l4_ = l4Builder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
+                }
             }
 
             @java.lang.Override
@@ -48256,7 +47359,7 @@ public final class ContextOuterClass {
                 if (other.hasL4()) {
                     mergeL4(other.getL4());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -48268,20 +47371,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionSettings parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getL0FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.ConnectionSettings_L0 l0_;
 
             private com.google.protobuf.SingleFieldBuilderV3 l0Builder_;
@@ -48291,7 +47442,7 @@ public final class ContextOuterClass {
              * @return Whether the l0 field is set.
              */
             public boolean hasL0() {
-                return l0Builder_ != null || l0_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -48315,10 +47466,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l0_ = value;
-                    onChanged();
                 } else {
                     l0Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48328,10 +47480,11 @@ public final class ContextOuterClass {
             public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
                 if (l0Builder_ == null) {
                     l0_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l0Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48340,15 +47493,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                 if (l0Builder_ == null) {
-                    if (l0_ != null) {
-                        l0_ = context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
+                        getL0Builder().mergeFrom(value);
                     } else {
                         l0_ = value;
                     }
-                    onChanged();
                 } else {
                     l0Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -48356,13 +47510,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L0 l0 = 1;
              */
             public Builder clearL0() {
-                if (l0Builder_ == null) {
-                    l0_ = null;
-                    onChanged();
-                } else {
-                    l0_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
                     l0Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48370,6 +47524,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L0 l0 = 1;
              */
             public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getL0FieldBuilder().getBuilder();
             }
@@ -48405,7 +47560,7 @@ public final class ContextOuterClass {
              * @return Whether the l2 field is set.
              */
             public boolean hasL2() {
-                return l2Builder_ != null || l2_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -48429,10 +47584,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l2_ = value;
-                    onChanged();
                 } else {
                     l2Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48442,10 +47598,11 @@ public final class ContextOuterClass {
             public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
                 if (l2Builder_ == null) {
                     l2_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l2Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48454,15 +47611,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                 if (l2Builder_ == null) {
-                    if (l2_ != null) {
-                        l2_ = context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
+                        getL2Builder().mergeFrom(value);
                     } else {
                         l2_ = value;
                     }
-                    onChanged();
                 } else {
                     l2Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -48470,13 +47628,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L2 l2 = 2;
              */
             public Builder clearL2() {
-                if (l2Builder_ == null) {
-                    l2_ = null;
-                    onChanged();
-                } else {
-                    l2_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
                     l2Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48484,6 +47642,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L2 l2 = 2;
              */
             public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getL2FieldBuilder().getBuilder();
             }
@@ -48519,7 +47678,7 @@ public final class ContextOuterClass {
              * @return Whether the l3 field is set.
              */
             public boolean hasL3() {
-                return l3Builder_ != null || l3_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -48543,10 +47702,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l3_ = value;
-                    onChanged();
                 } else {
                     l3Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48556,10 +47716,11 @@ public final class ContextOuterClass {
             public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
                 if (l3Builder_ == null) {
                     l3_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l3Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48568,15 +47729,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                 if (l3Builder_ == null) {
-                    if (l3_ != null) {
-                        l3_ = context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
+                        getL3Builder().mergeFrom(value);
                     } else {
                         l3_ = value;
                     }
-                    onChanged();
                 } else {
                     l3Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -48584,13 +47746,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L3 l3 = 3;
              */
             public Builder clearL3() {
-                if (l3Builder_ == null) {
-                    l3_ = null;
-                    onChanged();
-                } else {
-                    l3_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
                     l3Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48598,6 +47760,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L3 l3 = 3;
              */
             public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getL3FieldBuilder().getBuilder();
             }
@@ -48633,7 +47796,7 @@ public final class ContextOuterClass {
              * @return Whether the l4 field is set.
              */
             public boolean hasL4() {
-                return l4Builder_ != null || l4_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -48657,10 +47820,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l4_ = value;
-                    onChanged();
                 } else {
                     l4Builder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48670,10 +47834,11 @@ public final class ContextOuterClass {
             public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
                 if (l4Builder_ == null) {
                     l4_ = builderForValue.build();
-                    onChanged();
                 } else {
                     l4Builder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48682,15 +47847,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                 if (l4Builder_ == null) {
-                    if (l4_ != null) {
-                        l4_ = context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
+                        getL4Builder().mergeFrom(value);
                     } else {
                         l4_ = value;
                     }
-                    onChanged();
                 } else {
                     l4Builder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -48698,13 +47864,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L4 l4 = 4;
              */
             public Builder clearL4() {
-                if (l4Builder_ == null) {
-                    l4_ = null;
-                    onChanged();
-                } else {
-                    l4_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
                     l4Builder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -48712,6 +47878,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings_L4 l4 = 4;
              */
             public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getL4FieldBuilder().getBuilder();
             }
@@ -48765,7 +47932,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionSettings(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -48913,108 +48090,6 @@ public final class ContextOuterClass {
             return new Connection();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Connection(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-                                if (connectionId_ != null) {
-                                    subBuilder = connectionId_.toBuilder();
-                                }
-                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionId_);
-                                    connectionId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-                                if (serviceId_ != null) {
-                                    subBuilder = serviceId_.toBuilder();
-                                }
-                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(serviceId_);
-                                    serviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    pathHopsEndpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                pathHopsEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    subServiceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                subServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
-                                if (settings_ != null) {
-                                    subBuilder = settings_.toBuilder();
-                                }
-                                settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(settings_);
-                                    settings_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Connection_descriptor;
         }
@@ -49051,7 +48126,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return getConnectionId();
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -49081,11 +48156,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return getServiceId();
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
         }
 
         public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List pathHopsEndpointIds_;
 
         /**
@@ -49130,6 +48206,7 @@ public final class ContextOuterClass {
 
         public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List subServiceIds_;
 
         /**
@@ -49199,7 +48276,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-            return getSettings();
+            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -49232,7 +48309,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 output.writeMessage(5, getSettings());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -49256,7 +48333,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -49292,7 +48369,7 @@ public final class ContextOuterClass {
                 if (!getSettings().equals(other.getSettings()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -49324,7 +48401,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
                 hash = (53 * hash) + getSettings().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -49418,52 +48495,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Connection.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getPathHopsEndpointIdsFieldBuilder();
-                    getSubServiceIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                } else {
-                    connectionId_ = null;
+                bitField0_ = 0;
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                } else {
-                    serviceId_ = null;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    pathHopsEndpointIds_ = null;
                     pathHopsEndpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    subServiceIds_ = null;
                     subServiceIdsBuilder_.clear();
                 }
-                if (settingsBuilder_ == null) {
-                    settings_ = null;
-                } else {
-                    settings_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
                     settingsBuilder_ = null;
                 }
                 return this;
@@ -49491,72 +48559,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Connection buildPartial() {
                 context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-                int from_bitField0_ = bitField0_;
-                if (connectionIdBuilder_ == null) {
-                    result.connectionId_ = connectionId_;
-                } else {
-                    result.connectionId_ = connectionIdBuilder_.build();
-                }
-                if (serviceIdBuilder_ == null) {
-                    result.serviceId_ = serviceId_;
-                } else {
-                    result.serviceId_ = serviceIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
                 } else {
                     result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
                 }
                 if (subServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.subServiceIds_ = subServiceIds_;
                 } else {
                     result.subServiceIds_ = subServiceIdsBuilder_.build();
                 }
-                if (settingsBuilder_ == null) {
-                    result.settings_ = settings_;
-                } else {
-                    result.settings_ = settingsBuilder_.build();
-                }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Connection result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -49582,7 +48624,7 @@ public final class ContextOuterClass {
                     if (!other.pathHopsEndpointIds_.isEmpty()) {
                         if (pathHopsEndpointIds_.isEmpty()) {
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensurePathHopsEndpointIdsIsMutable();
                             pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
@@ -49595,7 +48637,7 @@ public final class ContextOuterClass {
                             pathHopsEndpointIdsBuilder_.dispose();
                             pathHopsEndpointIdsBuilder_ = null;
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
                         } else {
                             pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
@@ -49606,7 +48648,7 @@ public final class ContextOuterClass {
                     if (!other.subServiceIds_.isEmpty()) {
                         if (subServiceIds_.isEmpty()) {
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSubServiceIdsIsMutable();
                             subServiceIds_.addAll(other.subServiceIds_);
@@ -49619,7 +48661,7 @@ public final class ContextOuterClass {
                             subServiceIdsBuilder_.dispose();
                             subServiceIdsBuilder_ = null;
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
                         } else {
                             subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
@@ -49629,7 +48671,7 @@ public final class ContextOuterClass {
                 if (other.hasSettings()) {
                     mergeSettings(other.getSettings());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -49641,17 +48683,80 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Connection parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (pathHopsEndpointIdsBuilder_ == null) {
+                                        ensurePathHopsEndpointIdsIsMutable();
+                                        pathHopsEndpointIds_.add(m);
+                                    } else {
+                                        pathHopsEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (subServiceIdsBuilder_ == null) {
+                                        ensureSubServiceIdsIsMutable();
+                                        subServiceIds_.add(m);
+                                    } else {
+                                        subServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -49666,7 +48771,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return connectionIdBuilder_ != null || connectionId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -49690,10 +48795,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49703,10 +48809,11 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49715,15 +48822,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (connectionId_ != null) {
-                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
                     } else {
                         connectionId_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -49731,13 +48839,13 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 1;
              */
             public Builder clearConnectionId() {
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                    onChanged();
-                } else {
-                    connectionId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -49745,6 +48853,7 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 1;
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -49780,7 +48889,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return serviceIdBuilder_ != null || serviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -49804,10 +48913,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49817,10 +48927,11 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49829,15 +48940,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (serviceId_ != null) {
-                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
                     } else {
                         serviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -49845,13 +48957,13 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public Builder clearServiceId() {
-                if (serviceIdBuilder_ == null) {
-                    serviceId_ = null;
-                    onChanged();
-                } else {
-                    serviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
                     serviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -49859,6 +48971,7 @@ public final class ContextOuterClass {
              * .context.ServiceId service_id = 2;
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -49888,9 +49001,9 @@ public final class ContextOuterClass {
             private java.util.List pathHopsEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensurePathHopsEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     pathHopsEndpointIds_ = new java.util.ArrayList(pathHopsEndpointIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -50042,7 +49155,7 @@ public final class ContextOuterClass {
             public Builder clearPathHopsEndpointIds() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     pathHopsEndpointIdsBuilder_.clear();
@@ -50116,7 +49229,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getPathHopsEndpointIdsFieldBuilder() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(pathHopsEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     pathHopsEndpointIds_ = null;
                 }
                 return pathHopsEndpointIdsBuilder_;
@@ -50125,9 +49238,9 @@ public final class ContextOuterClass {
             private java.util.List subServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSubServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     subServiceIds_ = new java.util.ArrayList(subServiceIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -50279,7 +49392,7 @@ public final class ContextOuterClass {
             public Builder clearSubServiceIds() {
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     subServiceIdsBuilder_.clear();
@@ -50353,7 +49466,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getSubServiceIdsFieldBuilder() {
                 if (subServiceIdsBuilder_ == null) {
-                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(subServiceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     subServiceIds_ = null;
                 }
                 return subServiceIdsBuilder_;
@@ -50368,7 +49481,7 @@ public final class ContextOuterClass {
              * @return Whether the settings field is set.
              */
             public boolean hasSettings() {
-                return settingsBuilder_ != null || settings_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -50392,10 +49505,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     settings_ = value;
-                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50405,10 +49519,11 @@ public final class ContextOuterClass {
             public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
                 if (settingsBuilder_ == null) {
                     settings_ = builderForValue.build();
-                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50417,15 +49532,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
                 if (settingsBuilder_ == null) {
-                    if (settings_ != null) {
-                        settings_ = context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
+                        getSettingsBuilder().mergeFrom(value);
                     } else {
                         settings_ = value;
                     }
-                    onChanged();
                 } else {
                     settingsBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -50433,13 +49549,13 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings settings = 5;
              */
             public Builder clearSettings() {
-                if (settingsBuilder_ == null) {
-                    settings_ = null;
-                    onChanged();
-                } else {
-                    settings_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
                     settingsBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -50447,6 +49563,7 @@ public final class ContextOuterClass {
              * .context.ConnectionSettings settings = 5;
              */
             public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getSettingsFieldBuilder().getBuilder();
             }
@@ -50500,7 +49617,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Connection parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Connection(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -50571,57 +49698,6 @@ public final class ContextOuterClass {
             return new ConnectionIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    connectionIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                connectionIds_.add(input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
         }
@@ -50633,6 +49709,7 @@ public final class ContextOuterClass {
 
         public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List connectionIds_;
 
         /**
@@ -50693,7 +49770,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 output.writeMessage(1, connectionIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -50705,7 +49782,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -50721,7 +49798,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
             if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -50737,7 +49814,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -50831,29 +49908,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConnectionIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (connectionIdsBuilder_ == null) {
                     connectionIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    connectionIds_ = null;
                     connectionIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -50879,7 +49950,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionIdList buildPartial() {
                 context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
                 if (connectionIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
@@ -50889,38 +49968,10 @@ public final class ContextOuterClass {
                 } else {
                     result.connectionIds_ = connectionIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -50960,7 +50011,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -50972,17 +50023,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                    if (connectionIdsBuilder_ == null) {
+                                        ensureConnectionIdsIsMutable();
+                                        connectionIds_.add(m);
+                                    } else {
+                                        connectionIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -51252,7 +50333,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -51323,57 +50414,6 @@ public final class ContextOuterClass {
             return new ConnectionList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    connections_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                connections_.add(input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    connections_ = java.util.Collections.unmodifiableList(connections_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
         }
@@ -51385,6 +50425,7 @@ public final class ContextOuterClass {
 
         public static final int CONNECTIONS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List connections_;
 
         /**
@@ -51445,7 +50486,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 output.writeMessage(1, connections_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -51457,7 +50498,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -51473,7 +50514,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
             if (!getConnectionsList().equals(other.getConnectionsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -51489,7 +50530,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -51583,29 +50624,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getConnectionsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (connectionsBuilder_ == null) {
                     connections_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    connections_ = null;
                     connectionsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -51631,7 +50666,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionList buildPartial() {
                 context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
                 if (connectionsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connections_ = java.util.Collections.unmodifiableList(connections_);
@@ -51641,38 +50684,10 @@ public final class ContextOuterClass {
                 } else {
                     result.connections_ = connectionsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
             }
 
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -51712,7 +50727,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -51724,17 +50739,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
+                                    if (connectionsBuilder_ == null) {
+                                        ensureConnectionsIsMutable();
+                                        connections_.add(m);
+                                    } else {
+                                        connectionsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -52004,7 +51049,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -52083,70 +51138,6 @@ public final class ContextOuterClass {
             return new ConnectionEvent();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConnectionEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Event.Builder subBuilder = null;
-                                if (event_ != null) {
-                                    subBuilder = event_.toBuilder();
-                                }
-                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(event_);
-                                    event_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-                                if (connectionId_ != null) {
-                                    subBuilder = connectionId_.toBuilder();
-                                }
-                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(connectionId_);
-                                    connectionId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
         }
@@ -52183,7 +51174,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return getEvent();
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 2;
@@ -52213,7 +51204,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return getConnectionId();
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -52237,7 +51228,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 output.writeMessage(2, getConnectionId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -52252,7 +51243,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -52278,7 +51269,7 @@ public final class ContextOuterClass {
                 if (!getConnectionId().equals(other.getConnectionId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -52298,7 +51289,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -52392,32 +51383,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                } else {
-                    event_ = null;
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                } else {
-                    connectionId_ = null;
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
                 return this;
@@ -52445,48 +51428,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionEvent buildPartial() {
                 context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-                if (eventBuilder_ == null) {
-                    result.event_ = event_;
-                } else {
-                    result.event_ = eventBuilder_.build();
-                }
-                if (connectionIdBuilder_ == null) {
-                    result.connectionId_ = connectionId_;
-                } else {
-                    result.connectionId_ = connectionIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -52508,7 +51464,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionId()) {
                     mergeConnectionId(other.getConnectionId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -52520,20 +51476,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConnectionEvent parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_;
@@ -52543,7 +51533,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return eventBuilder_ != null || event_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -52567,10 +51557,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52580,10 +51571,11 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
-                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52592,15 +51584,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (event_ != null) {
-                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
                     } else {
                         event_ = value;
                     }
-                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -52608,13 +51601,13 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public Builder clearEvent() {
-                if (eventBuilder_ == null) {
-                    event_ = null;
-                    onChanged();
-                } else {
-                    event_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
                     eventBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -52622,6 +51615,7 @@ public final class ContextOuterClass {
              * .context.Event event = 1;
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -52657,7 +51651,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return connectionIdBuilder_ != null || connectionId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -52681,10 +51675,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52694,10 +51689,11 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52706,15 +51702,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (connectionId_ != null) {
-                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
                     } else {
                         connectionId_ = value;
                     }
-                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -52722,13 +51719,13 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 2;
              */
             public Builder clearConnectionId() {
-                if (connectionIdBuilder_ == null) {
-                    connectionId_ = null;
-                    onChanged();
-                } else {
-                    connectionId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
                     connectionIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -52736,6 +51733,7 @@ public final class ContextOuterClass {
              * .context.ConnectionId connection_id = 2;
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -52789,7 +51787,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConnectionEvent(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -52889,83 +51897,6 @@ public final class ContextOuterClass {
             return new EndPointId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-                                if (topologyId_ != null) {
-                                    subBuilder = topologyId_.toBuilder();
-                                }
-                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(topologyId_);
-                                    topologyId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-                                if (deviceId_ != null) {
-                                    subBuilder = deviceId_.toBuilder();
-                                }
-                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(deviceId_);
-                                    deviceId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (endpointUuid_ != null) {
-                                    subBuilder = endpointUuid_.toBuilder();
-                                }
-                                endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointUuid_);
-                                    endpointUuid_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
         }
@@ -53002,7 +51933,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return getTopologyId();
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -53032,7 +51963,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return getDeviceId();
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
         }
 
         public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
@@ -53062,7 +51993,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-            return getEndpointUuid();
+            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -53089,7 +52020,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 output.writeMessage(3, getEndpointUuid());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -53107,7 +52038,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -53139,7 +52070,7 @@ public final class ContextOuterClass {
                 if (!getEndpointUuid().equals(other.getEndpointUuid()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -53163,7 +52094,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointUuid().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -53261,38 +52192,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (topologyIdBuilder_ == null) {
-                    topologyId_ = null;
-                } else {
-                    topologyId_ = null;
+                bitField0_ = 0;
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
                     topologyIdBuilder_ = null;
                 }
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                } else {
-                    deviceId_ = null;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
-                if (endpointUuidBuilder_ == null) {
-                    endpointUuid_ = null;
-                } else {
-                    endpointUuid_ = null;
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
                     endpointUuidBuilder_ = null;
                 }
                 return this;
@@ -53320,53 +52242,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointId buildPartial() {
                 context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-                if (topologyIdBuilder_ == null) {
-                    result.topologyId_ = topologyId_;
-                } else {
-                    result.topologyId_ = topologyIdBuilder_.build();
-                }
-                if (deviceIdBuilder_ == null) {
-                    result.deviceId_ = deviceId_;
-                } else {
-                    result.deviceId_ = deviceIdBuilder_.build();
-                }
-                if (endpointUuidBuilder_ == null) {
-                    result.endpointUuid_ = endpointUuid_;
-                } else {
-                    result.endpointUuid_ = endpointUuidBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -53391,7 +52284,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointUuid()) {
                     mergeEndpointUuid(other.getEndpointUuid());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -53403,20 +52296,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.TopologyId topologyId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 topologyIdBuilder_;
@@ -53426,7 +52360,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return topologyIdBuilder_ != null || topologyId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -53450,10 +52384,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
-                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53463,10 +52398,11 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53475,15 +52411,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (topologyId_ != null) {
-                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
                     } else {
                         topologyId_ = value;
                     }
-                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -53491,13 +52428,13 @@ public final class ContextOuterClass {
              * .context.TopologyId topology_id = 1;
              */
             public Builder clearTopologyId() {
-                if (topologyIdBuilder_ == null) {
-                    topologyId_ = null;
-                    onChanged();
-                } else {
-                    topologyId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
                     topologyIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53505,6 +52442,7 @@ public final class ContextOuterClass {
              * .context.TopologyId topology_id = 1;
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -53540,7 +52478,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return deviceIdBuilder_ != null || deviceId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -53564,10 +52502,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53577,10 +52516,11 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53589,15 +52529,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (deviceId_ != null) {
-                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
                     } else {
                         deviceId_ = value;
                     }
-                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -53605,13 +52546,13 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public Builder clearDeviceId() {
-                if (deviceIdBuilder_ == null) {
-                    deviceId_ = null;
-                    onChanged();
-                } else {
-                    deviceId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
                     deviceIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53619,6 +52560,7 @@ public final class ContextOuterClass {
              * .context.DeviceId device_id = 2;
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -53654,7 +52596,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointUuid field is set.
              */
             public boolean hasEndpointUuid() {
-                return endpointUuidBuilder_ != null || endpointUuid_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -53678,10 +52620,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointUuid_ = value;
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53691,10 +52634,11 @@ public final class ContextOuterClass {
             public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (endpointUuidBuilder_ == null) {
                     endpointUuid_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53703,15 +52647,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                 if (endpointUuidBuilder_ == null) {
-                    if (endpointUuid_ != null) {
-                        endpointUuid_ = context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getEndpointUuidBuilder().mergeFrom(value);
                     } else {
                         endpointUuid_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointUuidBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -53719,13 +52664,13 @@ public final class ContextOuterClass {
              * .context.Uuid endpoint_uuid = 3;
              */
             public Builder clearEndpointUuid() {
-                if (endpointUuidBuilder_ == null) {
-                    endpointUuid_ = null;
-                    onChanged();
-                } else {
-                    endpointUuid_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
                     endpointUuidBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -53733,6 +52678,7 @@ public final class ContextOuterClass {
              * .context.Uuid endpoint_uuid = 3;
              */
             public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getEndpointUuidFieldBuilder().getBuilder();
             }
@@ -53786,7 +52732,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -53924,111 +52880,6 @@ public final class ContextOuterClass {
             return new EndPoint();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPoint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointType_ = s;
-                                break;
-                            }
-                        case 32:
-                            {
-                                int rawValue = input.readEnum();
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiSampleTypes_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiSampleTypes_.add(rawValue);
-                                break;
-                            }
-                        case 34:
-                            {
-                                int length = input.readRawVarint32();
-                                int oldLimit = input.pushLimit(length);
-                                while (input.getBytesUntilLimit() > 0) {
-                                    int rawValue = input.readEnum();
-                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                        kpiSampleTypes_ = new java.util.ArrayList();
-                                        mutable_bitField0_ |= 0x00000001;
-                                    }
-                                    kpiSampleTypes_.add(rawValue);
-                                }
-                                input.popLimit(oldLimit);
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Location.Builder subBuilder = null;
-                                if (endpointLocation_ != null) {
-                                    subBuilder = endpointLocation_.toBuilder();
-                                }
-                                endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointLocation_);
-                                    endpointLocation_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
         }
@@ -54065,12 +52916,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 2;
@@ -54107,7 +52959,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object endpointType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
 
         /**
          * string endpoint_type = 3;
@@ -54144,13 +52997,13 @@ public final class ContextOuterClass {
 
         public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiSampleTypes_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() {
 
             public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
         };
@@ -54231,7 +53084,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-            return getEndpointLocation();
+            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -54253,10 +53106,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
             }
             if (getKpiSampleTypesList().size() > 0) {
@@ -54269,7 +53122,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 output.writeMessage(5, getEndpointLocation());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -54281,10 +53134,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
             }
             {
@@ -54302,7 +53155,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54334,7 +53187,7 @@ public final class ContextOuterClass {
                 if (!getEndpointLocation().equals(other.getEndpointLocation()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -54362,7 +53215,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointLocation().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -54456,36 +53309,28 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPoint.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 name_ = "";
                 endpointType_ = "";
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000001);
-                if (endpointLocationBuilder_ == null) {
-                    endpointLocation_ = null;
-                } else {
-                    endpointLocation_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
                     endpointLocationBuilder_ = null;
                 }
                 return this;
@@ -54513,56 +53358,36 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPoint buildPartial() {
                 context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
-                int from_bitField0_ = bitField0_;
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                result.name_ = name_;
-                result.endpointType_ = endpointType_;
-                if (((bitField0_ & 0x00000001) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                    bitField0_ = (bitField0_ & ~0x00000001);
-                }
-                result.kpiSampleTypes_ = kpiSampleTypes_;
-                if (endpointLocationBuilder_ == null) {
-                    result.endpointLocation_ = endpointLocation_;
-                } else {
-                    result.endpointLocation_ = endpointLocationBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
+                if (((bitField0_ & 0x00000008) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                }
+                result.kpiSampleTypes_ = kpiSampleTypes_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -54583,16 +53408,18 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.kpiSampleTypes_.isEmpty()) {
                     if (kpiSampleTypes_.isEmpty()) {
                         kpiSampleTypes_ = other.kpiSampleTypes_;
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     } else {
                         ensureKpiSampleTypesIsMutable();
                         kpiSampleTypes_.addAll(other.kpiSampleTypes_);
@@ -54602,7 +53429,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointLocation()) {
                     mergeEndpointLocation(other.getEndpointLocation());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -54614,17 +53441,84 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPoint parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 32:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureKpiSampleTypesIsMutable();
+                                    kpiSampleTypes_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 32
+                            case 34:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureKpiSampleTypesIsMutable();
+                                        kpiSampleTypes_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -54639,7 +53533,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -54663,10 +53557,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54676,10 +53571,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54688,15 +53584,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -54704,13 +53601,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -54718,6 +53615,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -54787,6 +53685,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -54797,6 +53696,7 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -54812,6 +53712,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -54859,6 +53760,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -54869,6 +53771,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -54884,6 +53787,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -54891,9 +53795,9 @@ public final class ContextOuterClass {
             private java.util.List kpiSampleTypes_ = java.util.Collections.emptyList();
 
             private void ensureKpiSampleTypesIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     kpiSampleTypes_ = new java.util.ArrayList(kpiSampleTypes_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -54973,7 +53877,7 @@ public final class ContextOuterClass {
              */
             public Builder clearKpiSampleTypes() {
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000001);
+                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -54997,8 +53901,8 @@ public final class ContextOuterClass {
 
             /**
              * repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;
-             * @param index The index of the value to return.
-             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
              * @return This builder for chaining.
              */
             public Builder setKpiSampleTypesValue(int index, int value) {
@@ -55043,7 +53947,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointLocation field is set.
              */
             public boolean hasEndpointLocation() {
-                return endpointLocationBuilder_ != null || endpointLocation_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -55067,10 +53971,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointLocation_ = value;
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55080,10 +53985,11 @@ public final class ContextOuterClass {
             public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (endpointLocationBuilder_ == null) {
                     endpointLocation_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55092,15 +53998,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
                 if (endpointLocationBuilder_ == null) {
-                    if (endpointLocation_ != null) {
-                        endpointLocation_ = context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getEndpointLocationBuilder().mergeFrom(value);
                     } else {
                         endpointLocation_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointLocationBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -55108,13 +54015,13 @@ public final class ContextOuterClass {
              * .context.Location endpoint_location = 5;
              */
             public Builder clearEndpointLocation() {
-                if (endpointLocationBuilder_ == null) {
-                    endpointLocation_ = null;
-                    onChanged();
-                } else {
-                    endpointLocation_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
                     endpointLocationBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -55122,6 +54029,7 @@ public final class ContextOuterClass {
              * .context.Location endpoint_location = 5;
              */
             public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndpointLocationFieldBuilder().getBuilder();
             }
@@ -55175,7 +54083,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPoint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPoint(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -55276,75 +54194,6 @@ public final class ContextOuterClass {
             return new EndPointName();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointName(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                deviceName_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointName_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                endpointType_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
         }
@@ -55381,12 +54230,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int DEVICE_NAME_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object deviceName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object deviceName_ = "";
 
         /**
          * string device_name = 2;
@@ -55423,7 +54273,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object endpointName_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointName_ = "";
 
         /**
          * string endpoint_name = 3;
@@ -55460,7 +54311,8 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
 
-        private volatile java.lang.Object endpointType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
 
         /**
          * string endpoint_type = 4;
@@ -55513,16 +54365,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!getDeviceNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
             }
-            if (!getEndpointNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -55534,16 +54386,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!getDeviceNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
             }
-            if (!getEndpointNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
             }
-            if (!getEndpointTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -55569,7 +54421,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getEndpointType().equals(other.getEndpointType()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -55591,7 +54443,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getEndpointName().hashCode();
             hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + getEndpointType().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55685,26 +54537,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointName.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 deviceName_ = "";
@@ -55735,46 +54580,27 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointName buildPartial() {
                 context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.deviceName_ = deviceName_;
-                result.endpointName_ = endpointName_;
-                result.endpointType_ = endpointType_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceName_ = deviceName_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointName_ = endpointName_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
             }
 
             @java.lang.Override
@@ -55795,17 +54621,20 @@ public final class ContextOuterClass {
                 }
                 if (!other.getDeviceName().isEmpty()) {
                     deviceName_ = other.deviceName_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointName().isEmpty()) {
                     endpointName_ = other.endpointName_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -55817,20 +54646,68 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointName parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    deviceName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -55840,7 +54717,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -55864,10 +54741,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55877,10 +54755,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55889,15 +54768,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -55905,13 +54785,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -55919,6 +54799,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -55988,6 +54869,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceName_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -55998,6 +54880,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceName() {
                 deviceName_ = getDefaultInstance().getDeviceName();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -56013,6 +54896,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceName_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56060,6 +54944,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointName_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -56070,6 +54955,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointName() {
                 endpointName_ = getDefaultInstance().getEndpointName();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -56085,6 +54971,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointName_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -56132,6 +55019,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -56142,6 +55030,7 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -56157,6 +55046,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -56188,7 +55078,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointName parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointName(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -56259,57 +55159,6 @@ public final class ContextOuterClass {
             return new EndPointIdList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    endpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
         }
@@ -56321,6 +55170,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointIds_;
 
         /**
@@ -56381,7 +55231,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 output.writeMessage(1, endpointIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -56393,7 +55243,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -56409,7 +55259,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
             if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -56425,7 +55275,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -56519,29 +55369,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getEndpointIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -56567,7 +55411,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointIdList buildPartial() {
                 context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
                 if (endpointIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
@@ -56577,38 +55429,10 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -56648,7 +55472,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -56660,17 +55484,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointIdList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -56940,7 +55794,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointIdList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -57011,57 +55875,6 @@ public final class ContextOuterClass {
             return new EndPointNameList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private EndPointNameList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    endpointNames_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                endpointNames_.add(input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
         }
@@ -57073,6 +55886,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointNames_;
 
         /**
@@ -57133,7 +55947,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 output.writeMessage(1, endpointNames_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -57145,7 +55959,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57161,7 +55975,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
             if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -57177,7 +55991,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointNamesList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -57271,29 +56085,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getEndpointNamesFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (endpointNamesBuilder_ == null) {
                     endpointNames_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    endpointNames_ = null;
                     endpointNamesBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -57319,7 +56127,15 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointNameList buildPartial() {
                 context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
                 if (endpointNamesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
@@ -57329,38 +56145,10 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointNames_ = endpointNamesBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -57400,7 +56188,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -57412,17 +56200,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.EndPointNameList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
+                                    if (endpointNamesBuilder_ == null) {
+                                        ensureEndpointNamesIsMutable();
+                                        endpointNames_.add(m);
+                                    } else {
+                                        endpointNamesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -57692,7 +56510,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointNameList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new EndPointNameList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -57763,56 +56591,6 @@ public final class ContextOuterClass {
             return new ConfigRule_Custom();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                resourceKey_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                resourceValue_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
         }
@@ -57824,7 +56602,8 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object resourceKey_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceKey_ = "";
 
         /**
          * string resource_key = 1;
@@ -57861,7 +56640,8 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object resourceValue_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceValue_ = "";
 
         /**
          * string resource_value = 2;
@@ -57911,13 +56691,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getResourceKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
             }
-            if (!getResourceValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -57926,13 +56706,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getResourceKeyBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
             }
-            if (!getResourceValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57950,7 +56730,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getResourceValue().equals(other.getResourceValue()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -57966,7 +56746,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getResourceKey().hashCode();
             hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getResourceValue().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58060,22 +56840,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 resourceKey_ = "";
                 resourceValue_ = "";
                 return this;
@@ -58103,40 +56877,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
                 context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
-                result.resourceKey_ = resourceKey_;
-                result.resourceValue_ = resourceValue_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.resourceKey_ = resourceKey_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.resourceValue_ = resourceValue_;
+                }
             }
 
             @java.lang.Override
@@ -58154,13 +56909,15 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getResourceKey().isEmpty()) {
                     resourceKey_ = other.resourceKey_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getResourceValue().isEmpty()) {
                     resourceValue_ = other.resourceValue_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -58172,20 +56929,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    resourceKey_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    resourceValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object resourceKey_ = "";
 
             /**
@@ -58229,6 +57020,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58239,6 +57031,7 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceKey() {
                 resourceKey_ = getDefaultInstance().getResourceKey();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -58254,6 +57047,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceKey_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58301,6 +57095,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58311,6 +57106,7 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceValue() {
                 resourceValue_ = getDefaultInstance().getResourceValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -58326,6 +57122,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58357,7 +57154,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule_Custom(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -58436,70 +57243,6 @@ public final class ContextOuterClass {
             return new ConfigRule_ACL();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule_ACL(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                acl.Acl.AclRuleSet.Builder subBuilder = null;
-                                if (ruleSet_ != null) {
-                                    subBuilder = ruleSet_.toBuilder();
-                                }
-                                ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(ruleSet_);
-                                    ruleSet_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
         }
@@ -58536,7 +57279,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int RULE_SET_FIELD_NUMBER = 2;
@@ -58566,7 +57309,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-            return getRuleSet();
+            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -58590,7 +57333,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 output.writeMessage(2, getRuleSet());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -58605,7 +57348,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58631,7 +57374,7 @@ public final class ContextOuterClass {
                 if (!getRuleSet().equals(other.getRuleSet()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -58651,7 +57394,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
                 hash = (53 * hash) + getRuleSet().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58745,32 +57488,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
-                if (ruleSetBuilder_ == null) {
-                    ruleSet_ = null;
-                } else {
-                    ruleSet_ = null;
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
                     ruleSetBuilder_ = null;
                 }
                 return this;
@@ -58798,48 +57533,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
                 context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                if (ruleSetBuilder_ == null) {
-                    result.ruleSet_ = ruleSet_;
-                } else {
-                    result.ruleSet_ = ruleSetBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -58861,7 +57569,7 @@ public final class ContextOuterClass {
                 if (other.hasRuleSet()) {
                     mergeRuleSet(other.getRuleSet());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -58873,20 +57581,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -58896,7 +57638,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -58920,10 +57662,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58933,10 +57676,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58945,15 +57689,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -58961,13 +57706,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -58975,6 +57720,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -59010,7 +57756,7 @@ public final class ContextOuterClass {
              * @return Whether the ruleSet field is set.
              */
             public boolean hasRuleSet() {
-                return ruleSetBuilder_ != null || ruleSet_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -59034,10 +57780,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ruleSet_ = value;
-                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59047,10 +57794,11 @@ public final class ContextOuterClass {
             public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
                 if (ruleSetBuilder_ == null) {
                     ruleSet_ = builderForValue.build();
-                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59059,15 +57807,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
                 if (ruleSetBuilder_ == null) {
-                    if (ruleSet_ != null) {
-                        ruleSet_ = acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
+                        getRuleSetBuilder().mergeFrom(value);
                     } else {
                         ruleSet_ = value;
                     }
-                    onChanged();
                 } else {
                     ruleSetBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -59075,13 +57824,13 @@ public final class ContextOuterClass {
              * .acl.AclRuleSet rule_set = 2;
              */
             public Builder clearRuleSet() {
-                if (ruleSetBuilder_ == null) {
-                    ruleSet_ = null;
-                    onChanged();
-                } else {
-                    ruleSet_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
                     ruleSetBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -59089,6 +57838,7 @@ public final class ContextOuterClass {
              * .acl.AclRuleSet rule_set = 2;
              */
             public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getRuleSetFieldBuilder().getBuilder();
             }
@@ -59142,7 +57892,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_ACL parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule_ACL(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -59210,7 +57970,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
 
-        public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
+        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
     }
 
     /**
@@ -59236,78 +57996,6 @@ public final class ContextOuterClass {
             return new ConfigRule();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private ConfigRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                action_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
-                                if (configRuleCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
-                                }
-                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
-                                    configRule_ = subBuilder.buildPartial();
-                                }
-                                configRuleCase_ = 2;
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
-                                if (configRuleCase_ == 3) {
-                                    subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
-                                }
-                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
-                                    configRule_ = subBuilder.buildPartial();
-                                }
-                                configRuleCase_ = 3;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
         }
@@ -59319,6 +58007,7 @@ public final class ContextOuterClass {
 
         private int configRuleCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object configRule_;
 
         public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -59365,7 +58054,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_;
+        private int action_ = 0;
 
         /**
          * .context.ConfigActionEnum action = 1;
@@ -59382,8 +58071,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConfigActionEnum getAction() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
+            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
             return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
         }
 
@@ -59479,7 +58167,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -59497,7 +58185,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59527,7 +58215,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -59553,7 +58241,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59647,23 +58335,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (aclBuilder_ != null) {
+                    aclBuilder_.clear();
+                }
                 configRuleCase_ = 0;
                 configRule_ = null;
                 return this;
@@ -59691,54 +58379,30 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule buildPartial() {
                 context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
-                result.action_ = action_;
-                if (configRuleCase_ == 2) {
-                    if (customBuilder_ == null) {
-                        result.configRule_ = configRule_;
-                    } else {
-                        result.configRule_ = customBuilder_.build();
-                    }
-                }
-                if (configRuleCase_ == 3) {
-                    if (aclBuilder_ == null) {
-                        result.configRule_ = configRule_;
-                    } else {
-                        result.configRule_ = aclBuilder_.build();
-                    }
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.configRuleCase_ = configRuleCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
+                result.configRuleCase_ = configRuleCase_;
+                result.configRule_ = this.configRule_;
+                if (configRuleCase_ == 2 && customBuilder_ != null) {
+                    result.configRule_ = customBuilder_.build();
+                }
+                if (configRuleCase_ == 3 && aclBuilder_ != null) {
+                    result.configRule_ = aclBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -59773,7 +58437,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -59785,17 +58449,56 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.ConfigRule parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -59814,6 +58517,8 @@ public final class ContextOuterClass {
                 return this;
             }
 
+            private int bitField0_;
+
             private int action_ = 0;
 
             /**
@@ -59832,6 +58537,7 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -59842,8 +58548,7 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConfigActionEnum getAction() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
+                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
                 return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
             }
 
@@ -59856,6 +58561,7 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -59866,6 +58572,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -59946,8 +58653,9 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 2) {
                         customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
                     }
-                    customBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 2;
                 return this;
@@ -60008,7 +58716,6 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 2;
                 onChanged();
-                ;
                 return customBuilder_;
             }
 
@@ -60087,8 +58794,9 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 3) {
                         aclBuilder_.mergeFrom(value);
+                    } else {
+                        aclBuilder_.setMessage(value);
                     }
-                    aclBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 3;
                 return this;
@@ -60149,7 +58857,6 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 3;
                 onChanged();
-                ;
                 return aclBuilder_;
             }
 
@@ -60180,7 +58887,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new ConfigRule(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -60251,56 +58968,6 @@ public final class ContextOuterClass {
             return new Constraint_Custom();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                constraintType_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                constraintValue_ = s;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
         }
@@ -60312,7 +58979,8 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
 
-        private volatile java.lang.Object constraintType_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintType_ = "";
 
         /**
          * string constraint_type = 1;
@@ -60349,7 +59017,8 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object constraintValue_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintValue_ = "";
 
         /**
          * string constraint_value = 2;
@@ -60399,13 +59068,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!getConstraintTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
             }
-            if (!getConstraintValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -60414,13 +59083,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!getConstraintTypeBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
             }
-            if (!getConstraintValueBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -60438,7 +59107,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getConstraintValue().equals(other.getConstraintValue()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -60454,7 +59123,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getConstraintType().hashCode();
             hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getConstraintValue().hashCode();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -60548,22 +59217,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 constraintType_ = "";
                 constraintValue_ = "";
                 return this;
@@ -60591,40 +59254,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Custom buildPartial() {
                 context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
-                result.constraintType_ = constraintType_;
-                result.constraintValue_ = constraintValue_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.constraintType_ = constraintType_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.constraintValue_ = constraintValue_;
+                }
             }
 
             @java.lang.Override
@@ -60642,13 +59286,15 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getConstraintType().isEmpty()) {
                     constraintType_ = other.constraintType_;
+                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getConstraintValue().isEmpty()) {
                     constraintValue_ = other.constraintValue_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -60660,20 +59306,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Custom parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    constraintType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    constraintValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private java.lang.Object constraintType_ = "";
 
             /**
@@ -60717,6 +59397,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintType_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -60727,6 +59408,7 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintType() {
                 constraintType_ = getDefaultInstance().getConstraintType();
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -60742,6 +59424,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintType_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -60789,6 +59472,7 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -60799,6 +59483,7 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintValue() {
                 constraintValue_ = getDefaultInstance().getConstraintValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -60814,6 +59499,7 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintValue_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -60845,7 +59531,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Custom(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -60868,10 +59564,10 @@ public final class ContextOuterClass {
     com.google.protobuf.MessageOrBuilder {
 
         /**
-         * float start_timestamp = 1;
+         * double start_timestamp = 1;
          * @return The startTimestamp.
          */
-        float getStartTimestamp();
+        double getStartTimestamp();
 
         /**
          * float duration_days = 2;
@@ -60902,54 +59598,6 @@ public final class ContextOuterClass {
             return new Constraint_Schedule();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Schedule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                startTimestamp_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                durationDays_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
         }
@@ -60961,20 +59609,20 @@ public final class ContextOuterClass {
 
         public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
 
-        private float startTimestamp_;
+        private double startTimestamp_ = 0D;
 
         /**
-         * float start_timestamp = 1;
+         * double start_timestamp = 1;
          * @return The startTimestamp.
          */
         @java.lang.Override
-        public float getStartTimestamp() {
+        public double getStartTimestamp() {
             return startTimestamp_;
         }
 
         public static final int DURATION_DAYS_FIELD_NUMBER = 2;
 
-        private float durationDays_;
+        private float durationDays_ = 0F;
 
         /**
          * float duration_days = 2;
@@ -61000,13 +59648,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (startTimestamp_ != 0F) {
-                output.writeFloat(1, startTimestamp_);
+            if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) {
+                output.writeDouble(1, startTimestamp_);
             }
-            if (durationDays_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                 output.writeFloat(2, durationDays_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -61015,13 +59663,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (startTimestamp_ != 0F) {
-                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_);
+            if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, startTimestamp_);
             }
-            if (durationDays_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61035,11 +59683,11 @@ public final class ContextOuterClass {
                 return super.equals(obj);
             }
             context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj;
-            if (java.lang.Float.floatToIntBits(getStartTimestamp()) != java.lang.Float.floatToIntBits(other.getStartTimestamp()))
+            if (java.lang.Double.doubleToLongBits(getStartTimestamp()) != java.lang.Double.doubleToLongBits(other.getStartTimestamp()))
                 return false;
             if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -61052,10 +59700,10 @@ public final class ContextOuterClass {
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
-            hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp());
+            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getStartTimestamp()));
             hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61149,23 +59797,17 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                startTimestamp_ = 0F;
+                bitField0_ = 0;
+                startTimestamp_ = 0D;
                 durationDays_ = 0F;
                 return this;
             }
@@ -61192,40 +59834,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Schedule buildPartial() {
                 context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
-                result.startTimestamp_ = startTimestamp_;
-                result.durationDays_ = durationDays_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.startTimestamp_ = startTimestamp_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.durationDays_ = durationDays_;
+                }
             }
 
             @java.lang.Override
@@ -61241,13 +59864,13 @@ public final class ContextOuterClass {
             public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) {
                 if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance())
                     return this;
-                if (other.getStartTimestamp() != 0F) {
+                if (other.getStartTimestamp() != 0D) {
                     setStartTimestamp(other.getStartTimestamp());
                 }
                 if (other.getDurationDays() != 0F) {
                     setDurationDays(other.getDurationDays());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -61259,48 +59882,84 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 9:
+                                {
+                                    startTimestamp_ = input.readDouble();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 9
+                            case 21:
+                                {
+                                    durationDays_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
-            private float startTimestamp_;
+            private int bitField0_;
+
+            private double startTimestamp_;
 
             /**
-             * float start_timestamp = 1;
+             * double start_timestamp = 1;
              * @return The startTimestamp.
              */
             @java.lang.Override
-            public float getStartTimestamp() {
+            public double getStartTimestamp() {
                 return startTimestamp_;
             }
 
             /**
-             * float start_timestamp = 1;
+             * double start_timestamp = 1;
              * @param value The startTimestamp to set.
              * @return This builder for chaining.
              */
-            public Builder setStartTimestamp(float value) {
+            public Builder setStartTimestamp(double value) {
                 startTimestamp_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
 
             /**
-             * float start_timestamp = 1;
+             * double start_timestamp = 1;
              * @return This builder for chaining.
              */
             public Builder clearStartTimestamp() {
-                startTimestamp_ = 0F;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                startTimestamp_ = 0D;
                 onChanged();
                 return this;
             }
@@ -61323,6 +59982,7 @@ public final class ContextOuterClass {
              */
             public Builder setDurationDays(float value) {
                 durationDays_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61332,6 +59992,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDurationDays() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 durationDays_ = 0F;
                 onChanged();
                 return this;
@@ -61364,7 +60025,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Schedule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Schedule(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -61421,54 +60092,6 @@ public final class ContextOuterClass {
             return new GPS_Position();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private GPS_Position(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                latitude_ = input.readFloat();
-                                break;
-                            }
-                        case 21:
-                            {
-                                longitude_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
         }
@@ -61480,7 +60103,7 @@ public final class ContextOuterClass {
 
         public static final int LATITUDE_FIELD_NUMBER = 1;
 
-        private float latitude_;
+        private float latitude_ = 0F;
 
         /**
          * float latitude = 1;
@@ -61493,7 +60116,7 @@ public final class ContextOuterClass {
 
         public static final int LONGITUDE_FIELD_NUMBER = 2;
 
-        private float longitude_;
+        private float longitude_ = 0F;
 
         /**
          * float longitude = 2;
@@ -61519,13 +60142,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (latitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                 output.writeFloat(1, latitude_);
             }
-            if (longitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                 output.writeFloat(2, longitude_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -61534,13 +60157,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (latitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
             }
-            if (longitude_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61558,7 +60181,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -61574,7 +60197,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
             hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61668,22 +60291,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 latitude_ = 0F;
                 longitude_ = 0F;
                 return this;
@@ -61711,40 +60328,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.GPS_Position buildPartial() {
                 context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
-                result.latitude_ = latitude_;
-                result.longitude_ = longitude_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.latitude_ = latitude_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.longitude_ = longitude_;
+                }
             }
 
             @java.lang.Override
@@ -61766,7 +60364,7 @@ public final class ContextOuterClass {
                 if (other.getLongitude() != 0F) {
                     setLongitude(other.getLongitude());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -61778,20 +60376,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.GPS_Position parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    latitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    longitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float latitude_;
 
             /**
@@ -61810,6 +60442,7 @@ public final class ContextOuterClass {
              */
             public Builder setLatitude(float value) {
                 latitude_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -61819,6 +60452,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLatitude() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 latitude_ = 0F;
                 onChanged();
                 return this;
@@ -61842,6 +60476,7 @@ public final class ContextOuterClass {
              */
             public Builder setLongitude(float value) {
                 longitude_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61851,6 +60486,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLongitude() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 longitude_ = 0F;
                 onChanged();
                 return this;
@@ -61883,7 +60519,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public GPS_Position parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new GPS_Position(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -61940,7 +60586,43 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
 
-        public context.ContextOuterClass.Location.LocationCase getLocationCase();
+        /**
+         * string interface = 3;
+         * @return Whether the interface field is set.
+         */
+        boolean hasInterface();
+
+        /**
+         * string interface = 3;
+         * @return The interface.
+         */
+        java.lang.String getInterface();
+
+        /**
+         * string interface = 3;
+         * @return The bytes for interface.
+         */
+        com.google.protobuf.ByteString getInterfaceBytes();
+
+        /**
+         * string circuit_pack = 4;
+         * @return Whether the circuitPack field is set.
+         */
+        boolean hasCircuitPack();
+
+        /**
+         * string circuit_pack = 4;
+         * @return The circuitPack.
+         */
+        java.lang.String getCircuitPack();
+
+        /**
+         * string circuit_pack = 4;
+         * @return The bytes for circuitPack.
+         */
+        com.google.protobuf.ByteString getCircuitPackBytes();
+
+        context.ContextOuterClass.Location.LocationCase getLocationCase();
     }
 
     /**
@@ -61965,65 +60647,6 @@ public final class ContextOuterClass {
             return new Location();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Location(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                locationCase_ = 1;
-                                location_ = s;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
-                                if (locationCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
-                                }
-                                location_ = input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
-                                    location_ = subBuilder.buildPartial();
-                                }
-                                locationCase_ = 2;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Location_descriptor;
         }
@@ -62035,11 +60658,12 @@ public final class ContextOuterClass {
 
         private int locationCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object location_;
 
         public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
 
-            REGION(1), GPS_POSITION(2), LOCATION_NOT_SET(0);
+            REGION(1), GPS_POSITION(2), INTERFACE(3), CIRCUIT_PACK(4), LOCATION_NOT_SET(0);
 
             private final int value;
 
@@ -62063,6 +60687,10 @@ public final class ContextOuterClass {
                         return REGION;
                     case 2:
                         return GPS_POSITION;
+                    case 3:
+                        return INTERFACE;
+                    case 4:
+                        return CIRCUIT_PACK;
                     case 0:
                         return LOCATION_NOT_SET;
                     default:
@@ -62164,6 +60792,108 @@ public final class ContextOuterClass {
             return context.ContextOuterClass.GPS_Position.getDefaultInstance();
         }
 
+        public static final int INTERFACE_FIELD_NUMBER = 3;
+
+        /**
+         * string interface = 3;
+         * @return Whether the interface field is set.
+         */
+        public boolean hasInterface() {
+            return locationCase_ == 3;
+        }
+
+        /**
+         * string interface = 3;
+         * @return The interface.
+         */
+        public java.lang.String getInterface() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 3) {
+                ref = location_;
+            }
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (locationCase_ == 3) {
+                    location_ = s;
+                }
+                return s;
+            }
+        }
+
+        /**
+         * string interface = 3;
+         * @return The bytes for interface.
+         */
+        public com.google.protobuf.ByteString getInterfaceBytes() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 3) {
+                ref = location_;
+            }
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                if (locationCase_ == 3) {
+                    location_ = b;
+                }
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int CIRCUIT_PACK_FIELD_NUMBER = 4;
+
+        /**
+         * string circuit_pack = 4;
+         * @return Whether the circuitPack field is set.
+         */
+        public boolean hasCircuitPack() {
+            return locationCase_ == 4;
+        }
+
+        /**
+         * string circuit_pack = 4;
+         * @return The circuitPack.
+         */
+        public java.lang.String getCircuitPack() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 4) {
+                ref = location_;
+            }
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (locationCase_ == 4) {
+                    location_ = s;
+                }
+                return s;
+            }
+        }
+
+        /**
+         * string circuit_pack = 4;
+         * @return The bytes for circuitPack.
+         */
+        public com.google.protobuf.ByteString getCircuitPackBytes() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 4) {
+                ref = location_;
+            }
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                if (locationCase_ == 4) {
+                    location_ = b;
+                }
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
         private byte memoizedIsInitialized = -1;
 
         @java.lang.Override
@@ -62185,7 +60915,13 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            unknownFields.writeTo(output);
+            if (locationCase_ == 3) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_);
+            }
+            if (locationCase_ == 4) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, location_);
+            }
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -62200,7 +60936,13 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            size += unknownFields.getSerializedSize();
+            if (locationCase_ == 3) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_);
+            }
+            if (locationCase_ == 4) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, location_);
+            }
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62225,10 +60967,18 @@ public final class ContextOuterClass {
                     if (!getGpsPosition().equals(other.getGpsPosition()))
                         return false;
                     break;
+                case 3:
+                    if (!getInterface().equals(other.getInterface()))
+                        return false;
+                    break;
+                case 4:
+                    if (!getCircuitPack().equals(other.getCircuitPack()))
+                        return false;
+                    break;
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -62249,10 +60999,18 @@ public final class ContextOuterClass {
                     hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER;
                     hash = (53 * hash) + getGpsPosition().hashCode();
                     break;
+                case 3:
+                    hash = (37 * hash) + INTERFACE_FIELD_NUMBER;
+                    hash = (53 * hash) + getInterface().hashCode();
+                    break;
+                case 4:
+                    hash = (37 * hash) + CIRCUIT_PACK_FIELD_NUMBER;
+                    hash = (53 * hash) + getCircuitPack().hashCode();
+                    break;
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62346,22 +61104,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Location.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
+                if (gpsPositionBuilder_ != null) {
+                    gpsPositionBuilder_.clear();
+                }
                 locationCase_ = 0;
                 location_ = null;
                 return this;
@@ -62389,49 +61144,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Location buildPartial() {
                 context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
-                if (locationCase_ == 1) {
-                    result.location_ = location_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                if (locationCase_ == 2) {
-                    if (gpsPositionBuilder_ == null) {
-                        result.location_ = location_;
-                    } else {
-                        result.location_ = gpsPositionBuilder_.build();
-                    }
-                }
-                result.locationCase_ = locationCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(context.ContextOuterClass.Location result) {
+                int from_bitField0_ = bitField0_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
+                result.locationCase_ = locationCase_;
+                result.location_ = this.location_;
+                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
+                    result.location_ = gpsPositionBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -62460,12 +61190,26 @@ public final class ContextOuterClass {
                             mergeGpsPosition(other.getGpsPosition());
                             break;
                         }
+                    case INTERFACE:
+                        {
+                            locationCase_ = 3;
+                            location_ = other.location_;
+                            onChanged();
+                            break;
+                        }
+                    case CIRCUIT_PACK:
+                        {
+                            locationCase_ = 4;
+                            location_ = other.location_;
+                            onChanged();
+                            break;
+                        }
                     case LOCATION_NOT_SET:
                         {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -62477,17 +61221,66 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Location parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    locationCase_ = 1;
+                                    location_ = s;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
+                                    locationCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    locationCase_ = 3;
+                                    location_ = s;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    locationCase_ = 4;
+                                    location_ = s;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -62506,6 +61299,8 @@ public final class ContextOuterClass {
                 return this;
             }
 
+            private int bitField0_;
+
             /**
              * string region = 1;
              * @return Whether the region field is set.
@@ -62677,8 +61472,9 @@ public final class ContextOuterClass {
                 } else {
                     if (locationCase_ == 2) {
                         gpsPositionBuilder_.mergeFrom(value);
+                    } else {
+                        gpsPositionBuilder_.setMessage(value);
                     }
-                    gpsPositionBuilder_.setMessage(value);
                 }
                 locationCase_ = 2;
                 return this;
@@ -62739,10 +61535,201 @@ public final class ContextOuterClass {
                 }
                 locationCase_ = 2;
                 onChanged();
-                ;
                 return gpsPositionBuilder_;
             }
 
+            /**
+             * string interface = 3;
+             * @return Whether the interface field is set.
+             */
+            @java.lang.Override
+            public boolean hasInterface() {
+                return locationCase_ == 3;
+            }
+
+            /**
+             * string interface = 3;
+             * @return The interface.
+             */
+            @java.lang.Override
+            public java.lang.String getInterface() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 3) {
+                    ref = location_;
+                }
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    if (locationCase_ == 3) {
+                        location_ = s;
+                    }
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * string interface = 3;
+             * @return The bytes for interface.
+             */
+            @java.lang.Override
+            public com.google.protobuf.ByteString getInterfaceBytes() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 3) {
+                    ref = location_;
+                }
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    if (locationCase_ == 3) {
+                        location_ = b;
+                    }
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * string interface = 3;
+             * @param value The interface to set.
+             * @return This builder for chaining.
+             */
+            public Builder setInterface(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                locationCase_ = 3;
+                location_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * string interface = 3;
+             * @return This builder for chaining.
+             */
+            public Builder clearInterface() {
+                if (locationCase_ == 3) {
+                    locationCase_ = 0;
+                    location_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * string interface = 3;
+             * @param value The bytes for interface to set.
+             * @return This builder for chaining.
+             */
+            public Builder setInterfaceBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                locationCase_ = 3;
+                location_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @return Whether the circuitPack field is set.
+             */
+            @java.lang.Override
+            public boolean hasCircuitPack() {
+                return locationCase_ == 4;
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @return The circuitPack.
+             */
+            @java.lang.Override
+            public java.lang.String getCircuitPack() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 4) {
+                    ref = location_;
+                }
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    if (locationCase_ == 4) {
+                        location_ = s;
+                    }
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @return The bytes for circuitPack.
+             */
+            @java.lang.Override
+            public com.google.protobuf.ByteString getCircuitPackBytes() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 4) {
+                    ref = location_;
+                }
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    if (locationCase_ == 4) {
+                        location_ = b;
+                    }
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @param value The circuitPack to set.
+             * @return This builder for chaining.
+             */
+            public Builder setCircuitPack(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                locationCase_ = 4;
+                location_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @return This builder for chaining.
+             */
+            public Builder clearCircuitPack() {
+                if (locationCase_ == 4) {
+                    locationCase_ = 0;
+                    location_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * string circuit_pack = 4;
+             * @param value The bytes for circuitPack to set.
+             * @return This builder for chaining.
+             */
+            public Builder setCircuitPackBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                locationCase_ = 4;
+                location_ = value;
+                onChanged();
+                return this;
+            }
+
             @java.lang.Override
             public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.setUnknownFields(unknownFields);
@@ -62770,7 +61757,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Location parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Location(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -62849,70 +61846,6 @@ public final class ContextOuterClass {
             return new Constraint_EndPointLocation();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_EndPointLocation(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Location.Builder subBuilder = null;
-                                if (location_ != null) {
-                                    subBuilder = location_.toBuilder();
-                                }
-                                location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(location_);
-                                    location_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
         }
@@ -62949,7 +61882,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int LOCATION_FIELD_NUMBER = 2;
@@ -62979,7 +61912,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-            return getLocation();
+            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -63003,7 +61936,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 output.writeMessage(2, getLocation());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -63018,7 +61951,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63044,7 +61977,7 @@ public final class ContextOuterClass {
                 if (!getLocation().equals(other.getLocation()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -63064,7 +61997,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getLocation().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63158,32 +62091,24 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
-                if (locationBuilder_ == null) {
-                    location_ = null;
-                } else {
-                    location_ = null;
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
                     locationBuilder_ = null;
                 }
                 return this;
@@ -63211,48 +62136,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
-                }
-                if (locationBuilder_ == null) {
-                    result.location_ = location_;
-                } else {
-                    result.location_ = locationBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -63274,7 +62172,7 @@ public final class ContextOuterClass {
                 if (other.hasLocation()) {
                     mergeLocation(other.getLocation());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -63286,20 +62184,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -63309,7 +62241,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -63333,10 +62265,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63346,10 +62279,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63358,15 +62292,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -63374,13 +62309,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -63388,6 +62323,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -63423,7 +62359,7 @@ public final class ContextOuterClass {
              * @return Whether the location field is set.
              */
             public boolean hasLocation() {
-                return locationBuilder_ != null || location_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -63447,10 +62383,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     location_ = value;
-                    onChanged();
                 } else {
                     locationBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63460,10 +62397,11 @@ public final class ContextOuterClass {
             public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (locationBuilder_ == null) {
                     location_ = builderForValue.build();
-                    onChanged();
                 } else {
                     locationBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63472,15 +62410,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeLocation(context.ContextOuterClass.Location value) {
                 if (locationBuilder_ == null) {
-                    if (location_ != null) {
-                        location_ = context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getLocationBuilder().mergeFrom(value);
                     } else {
                         location_ = value;
                     }
-                    onChanged();
                 } else {
                     locationBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -63488,13 +62427,13 @@ public final class ContextOuterClass {
              * .context.Location location = 2;
              */
             public Builder clearLocation() {
-                if (locationBuilder_ == null) {
-                    location_ = null;
-                    onChanged();
-                } else {
-                    location_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
                     locationBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -63502,6 +62441,7 @@ public final class ContextOuterClass {
              * .context.Location location = 2;
              */
             public context.ContextOuterClass.Location.Builder getLocationBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLocationFieldBuilder().getBuilder();
             }
@@ -63555,7 +62495,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointLocation parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_EndPointLocation(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -63623,62 +62573,6 @@ public final class ContextOuterClass {
             return new Constraint_EndPointPriority();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_EndPointPriority(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-                                if (endpointId_ != null) {
-                                    subBuilder = endpointId_.toBuilder();
-                                }
-                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endpointId_);
-                                    endpointId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                priority_ = input.readUInt32();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
         }
@@ -63715,12 +62609,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return getEndpointId();
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 2;
 
-        private int priority_;
+        private int priority_ = 0;
 
         /**
          * uint32 priority = 2;
@@ -63752,7 +62646,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 output.writeUInt32(2, priority_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -63767,7 +62661,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63789,7 +62683,7 @@ public final class ContextOuterClass {
             }
             if (getPriority() != other.getPriority())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -63807,7 +62701,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
             hash = (53 * hash) + getPriority();
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63901,26 +62795,19 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                } else {
-                    endpointId_ = null;
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
                 priority_ = 0;
@@ -63949,44 +62836,21 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
-                if (endpointIdBuilder_ == null) {
-                    result.endpointId_ = endpointId_;
-                } else {
-                    result.endpointId_ = endpointIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.priority_ = priority_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.priority_ = priority_;
+                }
             }
 
             @java.lang.Override
@@ -64008,7 +62872,7 @@ public final class ContextOuterClass {
                 if (other.getPriority() != 0) {
                     setPriority(other.getPriority());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -64020,20 +62884,54 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    priority_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 endpointIdBuilder_;
@@ -64043,7 +62941,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return endpointIdBuilder_ != null || endpointId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -64067,10 +62965,11 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64080,10 +62979,11 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64092,15 +62992,16 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (endpointId_ != null) {
-                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
                     } else {
                         endpointId_ = value;
                     }
-                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -64108,13 +63009,13 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public Builder clearEndpointId() {
-                if (endpointIdBuilder_ == null) {
-                    endpointId_ = null;
-                    onChanged();
-                } else {
-                    endpointId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
                     endpointIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -64122,6 +63023,7 @@ public final class ContextOuterClass {
              * .context.EndPointId endpoint_id = 1;
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -64166,6 +63068,7 @@ public final class ContextOuterClass {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -64175,6 +63078,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -64207,7 +63111,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointPriority parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_EndPointPriority(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -64258,49 +63172,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Latency();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Latency(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                e2ELatencyMs_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
         }
@@ -64312,7 +63183,7 @@ public final class ContextOuterClass {
 
         public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
 
-        private float e2ELatencyMs_;
+        private float e2ELatencyMs_ = 0F;
 
         /**
          * float e2e_latency_ms = 1;
@@ -64338,10 +63209,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (e2ELatencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                 output.writeFloat(1, e2ELatencyMs_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -64350,10 +63221,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (e2ELatencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64369,7 +63240,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
             if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -64383,7 +63254,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64477,22 +63348,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 e2ELatencyMs_ = 0F;
                 return this;
             }
@@ -64519,39 +63384,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
-                result.e2ELatencyMs_ = e2ELatencyMs_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.e2ELatencyMs_ = e2ELatencyMs_;
+                }
             }
 
             @java.lang.Override
@@ -64570,7 +63414,7 @@ public final class ContextOuterClass {
                 if (other.getE2ELatencyMs() != 0F) {
                     setE2ELatencyMs(other.getE2ELatencyMs());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -64582,20 +63426,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    e2ELatencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float e2ELatencyMs_;
 
             /**
@@ -64614,6 +63485,7 @@ public final class ContextOuterClass {
              */
             public Builder setE2ELatencyMs(float value) {
                 e2ELatencyMs_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -64623,6 +63495,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearE2ELatencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 e2ELatencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -64655,7 +63528,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Latency parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Latency(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -64706,49 +63589,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Capacity();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Capacity(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 13:
-                            {
-                                capacityGbps_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
         }
@@ -64760,7 +63600,7 @@ public final class ContextOuterClass {
 
         public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float capacityGbps_;
+        private float capacityGbps_ = 0F;
 
         /**
          * float capacity_gbps = 1;
@@ -64786,10 +63626,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (capacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                 output.writeFloat(1, capacityGbps_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -64798,10 +63638,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (capacityGbps_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64817,7 +63657,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
             if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -64831,7 +63671,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64925,22 +63765,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 capacityGbps_ = 0F;
                 return this;
             }
@@ -64967,39 +63801,18 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
-                result.capacityGbps_ = capacityGbps_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.capacityGbps_ = capacityGbps_;
+                }
             }
 
             @java.lang.Override
@@ -65018,7 +63831,7 @@ public final class ContextOuterClass {
                 if (other.getCapacityGbps() != 0F) {
                     setCapacityGbps(other.getCapacityGbps());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -65030,20 +63843,47 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 13:
+                                {
+                                    capacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private float capacityGbps_;
 
             /**
@@ -65062,6 +63902,7 @@ public final class ContextOuterClass {
              */
             public Builder setCapacityGbps(float value) {
                 capacityGbps_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -65071,6 +63912,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 capacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -65103,7 +63945,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Capacity parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Capacity(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -65170,59 +64022,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Availability();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Availability(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                numDisjointPaths_ = input.readUInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                allActive_ = input.readBool();
-                                break;
-                            }
-                        case 29:
-                            {
-                                availability_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
         }
@@ -65234,7 +64033,7 @@ public final class ContextOuterClass {
 
         public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
 
-        private int numDisjointPaths_;
+        private int numDisjointPaths_ = 0;
 
         /**
          * uint32 num_disjoint_paths = 1;
@@ -65247,7 +64046,7 @@ public final class ContextOuterClass {
 
         public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
 
-        private boolean allActive_;
+        private boolean allActive_ = false;
 
         /**
          * bool all_active = 2;
@@ -65260,7 +64059,7 @@ public final class ContextOuterClass {
 
         public static final int AVAILABILITY_FIELD_NUMBER = 3;
 
-        private float availability_;
+        private float availability_ = 0F;
 
         /**
          * 
@@ -65296,10 +64095,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 output.writeBool(2, allActive_);
             }
-            if (availability_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                 output.writeFloat(3, availability_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -65314,10 +64113,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
             }
-            if (availability_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -65337,7 +64136,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -65355,7 +64154,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
             hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -65449,22 +64248,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 numDisjointPaths_ = 0;
                 allActive_ = false;
                 availability_ = 0F;
@@ -65493,41 +64286,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-                result.numDisjointPaths_ = numDisjointPaths_;
-                result.allActive_ = allActive_;
-                result.availability_ = availability_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.numDisjointPaths_ = numDisjointPaths_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.allActive_ = allActive_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.availability_ = availability_;
+                }
             }
 
             @java.lang.Override
@@ -65552,7 +64328,7 @@ public final class ContextOuterClass {
                 if (other.getAvailability() != 0F) {
                     setAvailability(other.getAvailability());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -65564,20 +64340,61 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    numDisjointPaths_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    allActive_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 29:
+                                {
+                                    availability_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private int numDisjointPaths_;
 
             /**
@@ -65596,6 +64413,7 @@ public final class ContextOuterClass {
              */
             public Builder setNumDisjointPaths(int value) {
                 numDisjointPaths_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -65605,6 +64423,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearNumDisjointPaths() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 numDisjointPaths_ = 0;
                 onChanged();
                 return this;
@@ -65628,6 +64447,7 @@ public final class ContextOuterClass {
              */
             public Builder setAllActive(boolean value) {
                 allActive_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -65637,6 +64457,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAllActive() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 allActive_ = false;
                 onChanged();
                 return this;
@@ -65668,6 +64489,7 @@ public final class ContextOuterClass {
              */
             public Builder setAvailability(float value) {
                 availability_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -65681,6 +64503,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAvailability() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 availability_ = 0F;
                 onChanged();
                 return this;
@@ -65713,7 +64536,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Availability parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Availability(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -65791,73 +64624,6 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Isolation_level();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_SLA_Isolation_level(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    isolationLevel_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                isolationLevel_.add(rawValue);
-                                break;
-                            }
-                        case 10:
-                            {
-                                int length = input.readRawVarint32();
-                                int oldLimit = input.pushLimit(length);
-                                while (input.getBytesUntilLimit() > 0) {
-                                    int rawValue = input.readEnum();
-                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                        isolationLevel_ = new java.util.ArrayList();
-                                        mutable_bitField0_ |= 0x00000001;
-                                    }
-                                    isolationLevel_.add(rawValue);
-                                }
-                                input.popLimit(oldLimit);
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
         }
@@ -65869,13 +64635,13 @@ public final class ContextOuterClass {
 
         public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List isolationLevel_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter() {
 
             public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
                 return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
             }
         };
@@ -65952,7 +64718,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < isolationLevel_.size(); i++) {
                 output.writeEnumNoTag(isolationLevel_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -65973,7 +64739,7 @@ public final class ContextOuterClass {
                 }
                 isolationLevelMemoizedSerializedSize = dataSize;
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -65989,7 +64755,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
             if (!isolationLevel_.equals(other.isolationLevel_))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -66005,7 +64771,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
                 hash = (53 * hash) + isolationLevel_.hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66099,22 +64865,16 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 isolationLevel_ = java.util.Collections.emptyList();
                 bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
@@ -66142,44 +64902,24 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
-                int from_bitField0_ = bitField0_;
-                if (((bitField0_ & 0x00000001) != 0)) {
-                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.isolationLevel_ = isolationLevel_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.isolationLevel_ = isolationLevel_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -66205,7 +64945,7 @@ public final class ContextOuterClass {
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -66217,17 +64957,56 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureIsolationLevelIsMutable();
+                                    isolationLevel_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 8
+                            case 10:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureIsolationLevelIsMutable();
+                                        isolationLevel_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -66342,8 +65121,8 @@ public final class ContextOuterClass {
 
             /**
              * repeated .context.IsolationLevelEnum isolation_level = 1;
-             * @param index The index of the value to return.
-             * @return The enum numeric value on the wire of isolationLevel at the given index.
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for isolationLevel to set.
              * @return This builder for chaining.
              */
             public Builder setIsolationLevelValue(int index, int value) {
@@ -66406,7 +65185,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Isolation_level parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_SLA_Isolation_level(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -66535,86 +65324,6 @@ public final class ContextOuterClass {
             return new Constraint_Exclusions();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Constraint_Exclusions(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                isPermanent_ = input.readBool();
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deviceIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 26:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                                    endpointIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000002;
-                                }
-                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 34:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                                    linkIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000004;
-                                }
-                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000002) != 0)) {
-                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                }
-                if (((mutable_bitField0_ & 0x00000004) != 0)) {
-                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
         }
@@ -66626,7 +65335,7 @@ public final class ContextOuterClass {
 
         public static final int IS_PERMANENT_FIELD_NUMBER = 1;
 
-        private boolean isPermanent_;
+        private boolean isPermanent_ = false;
 
         /**
          * bool is_permanent = 1;
@@ -66639,6 +65348,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List deviceIds_;
 
         /**
@@ -66683,6 +65393,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
 
+        @SuppressWarnings("serial")
         private java.util.List endpointIds_;
 
         /**
@@ -66727,6 +65438,7 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
+        @SuppressWarnings("serial")
         private java.util.List linkIds_;
 
         /**
@@ -66796,7 +65508,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -66817,7 +65529,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -66839,7 +65551,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -66865,7 +65577,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66959,44 +65671,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDeviceIdsFieldBuilder();
-                    getEndpointIdsFieldBuilder();
-                    getLinkIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 isPermanent_ = false;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
+                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
+                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -67022,67 +65728,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
                 context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
-                int from_bitField0_ = bitField0_;
-                result.isPermanent_ = isPermanent_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (endpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.endpointIds_ = endpointIds_;
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
             }
 
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.isPermanent_ = isPermanent_;
+                }
             }
 
             @java.lang.Override
@@ -67105,7 +65793,7 @@ public final class ContextOuterClass {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -67118,7 +65806,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -67129,7 +65817,7 @@ public final class ContextOuterClass {
                     if (!other.endpointIds_.isEmpty()) {
                         if (endpointIds_.isEmpty()) {
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureEndpointIdsIsMutable();
                             endpointIds_.addAll(other.endpointIds_);
@@ -67142,7 +65830,7 @@ public final class ContextOuterClass {
                             endpointIdsBuilder_.dispose();
                             endpointIdsBuilder_ = null;
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                         } else {
                             endpointIdsBuilder_.addAllMessages(other.endpointIds_);
@@ -67153,7 +65841,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -67166,14 +65854,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -67185,17 +65873,78 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    isPermanent_ = input.readBool();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -67219,6 +65968,7 @@ public final class ContextOuterClass {
              */
             public Builder setIsPermanent(boolean value) {
                 isPermanent_ = value;
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -67228,6 +65978,7 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIsPermanent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
                 isPermanent_ = false;
                 onChanged();
                 return this;
@@ -67236,9 +65987,9 @@ public final class ContextOuterClass {
             private java.util.List deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     deviceIds_ = new java.util.ArrayList(deviceIds_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -67390,7 +66141,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -67464,7 +66215,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -67473,9 +66224,9 @@ public final class ContextOuterClass {
             private java.util.List endpointIds_ = java.util.Collections.emptyList();
 
             private void ensureEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     endpointIds_ = new java.util.ArrayList(endpointIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -67627,7 +66378,7 @@ public final class ContextOuterClass {
             public Builder clearEndpointIds() {
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     endpointIdsBuilder_.clear();
@@ -67701,7 +66452,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getEndpointIdsFieldBuilder() {
                 if (endpointIdsBuilder_ == null) {
-                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(endpointIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     endpointIds_ = null;
                 }
                 return endpointIdsBuilder_;
@@ -67710,9 +66461,9 @@ public final class ContextOuterClass {
             private java.util.List linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     linkIds_ = new java.util.ArrayList(linkIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -67864,7 +66615,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -67938,7 +66689,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -67971,7 +66722,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Exclusions parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Constraint_Exclusions(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -67990,776 +66751,676 @@ public final class ContextOuterClass {
         }
     }
 
-    public interface ConstraintOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint)
+    public interface QoSProfileIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.QoSProfileId)
     com.google.protobuf.MessageOrBuilder {
 
         /**
-         * .context.ConstraintActionEnum action = 1;
-         * @return The enum numeric value on the wire for action.
-         */
-        int getActionValue();
-
-        /**
-         * .context.ConstraintActionEnum action = 1;
-         * @return The action.
+         * .context.Uuid qos_profile_id = 1;
+         * @return Whether the qosProfileId field is set.
          */
-        context.ContextOuterClass.ConstraintActionEnum getAction();
+        boolean hasQosProfileId();
 
         /**
-         * .context.Constraint_Custom custom = 2;
-         * @return Whether the custom field is set.
+         * .context.Uuid qos_profile_id = 1;
+         * @return The qosProfileId.
          */
-        boolean hasCustom();
+        context.ContextOuterClass.Uuid getQosProfileId();
 
         /**
-         * .context.Constraint_Custom custom = 2;
-         * @return The custom.
+         * .context.Uuid qos_profile_id = 1;
          */
-        context.ContextOuterClass.Constraint_Custom getCustom();
+        context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder();
+    }
 
-        /**
-         * .context.Constraint_Custom custom = 2;
-         */
-        context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();
+    /**
+     * Protobuf type {@code context.QoSProfileId}
+     */
+    public static final class QoSProfileId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.QoSProfileId)
+    QoSProfileIdOrBuilder {
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         * @return Whether the schedule field is set.
-         */
-        boolean hasSchedule();
+        private static final long serialVersionUID = 0L;
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         * @return The schedule.
-         */
-        context.ContextOuterClass.Constraint_Schedule getSchedule();
+        // Use QoSProfileId.newBuilder() to construct.
+        private QoSProfileId(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+            super(builder);
+        }
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         */
-        context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();
+        private QoSProfileId() {
+        }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         * @return Whether the endpointLocation field is set.
-         */
-        boolean hasEndpointLocation();
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new QoSProfileId();
+        }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         * @return The endpointLocation.
-         */
-        context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
+        }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         */
-        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class);
+        }
 
-        /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
-         * @return Whether the endpointPriority field is set.
-         */
-        boolean hasEndpointPriority();
+        public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1;
 
-        /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
-         * @return The endpointPriority.
-         */
-        context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();
+        private context.ContextOuterClass.Uuid qosProfileId_;
 
         /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         * .context.Uuid qos_profile_id = 1;
+         * @return Whether the qosProfileId field is set.
          */
-        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();
+        @java.lang.Override
+        public boolean hasQosProfileId() {
+            return qosProfileId_ != null;
+        }
 
         /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
-         * @return Whether the slaCapacity field is set.
+         * .context.Uuid qos_profile_id = 1;
+         * @return The qosProfileId.
          */
-        boolean hasSlaCapacity();
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getQosProfileId() {
+            return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
+        }
 
         /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
-         * @return The slaCapacity.
+         * .context.Uuid qos_profile_id = 1;
          */
-        context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() {
+            return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
+        }
 
-        /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
-         */
-        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();
+        private byte memoizedIsInitialized = -1;
 
-        /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
-         * @return Whether the slaLatency field is set.
-         */
-        boolean hasSlaLatency();
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-        /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
-         * @return The slaLatency.
-         */
-        context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (qosProfileId_ != null) {
+                output.writeMessage(1, getQosProfileId());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-        /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
-         */
-        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (qosProfileId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         * @return Whether the slaAvailability field is set.
-         */
-        boolean hasSlaAvailability();
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.QoSProfileId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.QoSProfileId other = (context.ContextOuterClass.QoSProfileId) obj;
+            if (hasQosProfileId() != other.hasQosProfileId())
+                return false;
+            if (hasQosProfileId()) {
+                if (!getQosProfileId().equals(other.getQosProfileId()))
+                    return false;
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         * @return The slaAvailability.
-         */
-        context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasQosProfileId()) {
+                hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getQosProfileId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         */
-        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-        /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
-         * @return Whether the slaIsolation field is set.
-         */
-        boolean hasSlaIsolation();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-        /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
-         * @return The slaIsolation.
-         */
-        context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-        /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
-         */
-        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-        /**
-         * .context.Constraint_Exclusions exclusions = 10;
-         * @return Whether the exclusions field is set.
-         */
-        boolean hasExclusions();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-        /**
-         * .context.Constraint_Exclusions exclusions = 10;
-         * @return The exclusions.
-         */
-        context.ContextOuterClass.Constraint_Exclusions getExclusions();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-        /**
-         * .context.Constraint_Exclusions exclusions = 10;
-         */
-        context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
+        public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-        public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
-    }
+        public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * Protobuf type {@code context.Constraint}
-     */
-    public static final class Constraint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint)
-    ConstraintOrBuilder {
+        public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-        private static final long serialVersionUID = 0L;
+        public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-        // Use Constraint.newBuilder() to construct.
-        private Constraint(com.google.protobuf.GeneratedMessageV3.Builder builder) {
-            super(builder);
+        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        private Constraint() {
-            action_ = 0;
+        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
         @java.lang.Override
-        @SuppressWarnings({ "unused" })
-        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
-            return new Constraint();
+        public Builder newBuilderForType() {
+            return newBuilder();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
         }
 
-        private Constraint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                int rawValue = input.readEnum();
-                                action_ = rawValue;
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
-                                if (constraintCase_ == 2) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 2;
-                                break;
-                            }
-                        case 26:
-                            {
-                                context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
-                                if (constraintCase_ == 3) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 3;
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
-                                if (constraintCase_ == 4) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 4;
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
-                                if (constraintCase_ == 5) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 5;
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
-                                if (constraintCase_ == 6) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 6;
-                                break;
-                            }
-                        case 58:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
-                                if (constraintCase_ == 7) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 7;
-                                break;
-                            }
-                        case 66:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
-                                if (constraintCase_ == 8) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 8;
-                                break;
-                            }
-                        case 74:
-                            {
-                                context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
-                                if (constraintCase_ == 9) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 9;
-                                break;
-                            }
-                        case 82:
-                            {
-                                context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
-                                if (constraintCase_ == 10) {
-                                    subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
-                                }
-                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
-                                    constraint_ = subBuilder.buildPartial();
-                                }
-                                constraintCase_ = 10;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
+        public static Builder newBuilder(context.ContextOuterClass.QoSProfileId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
         }
 
-        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-            return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
         }
 
         @java.lang.Override
-        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-            return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
         }
 
-        private int constraintCase_ = 0;
+        /**
+         * Protobuf type {@code context.QoSProfileId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.QoSProfileId)
+        context.ContextOuterClass.QoSProfileIdOrBuilder {
 
-        private java.lang.Object constraint_;
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
+            }
 
-        public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class);
+            }
 
-            CUSTOM(2),
-            SCHEDULE(3),
-            ENDPOINT_LOCATION(4),
-            ENDPOINT_PRIORITY(5),
-            SLA_CAPACITY(6),
-            SLA_LATENCY(7),
-            SLA_AVAILABILITY(8),
-            SLA_ISOLATION(9),
-            EXCLUSIONS(10),
-            CONSTRAINT_NOT_SET(0);
+            // Construct using context.ContextOuterClass.QoSProfileId.newBuilder()
+            private Builder() {
+            }
 
-            private final int value;
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-            private ConstraintCase(int value) {
-                this.value = value;
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                qosProfileId_ = null;
+                if (qosProfileIdBuilder_ != null) {
+                    qosProfileIdBuilder_.dispose();
+                    qosProfileIdBuilder_ = null;
+                }
+                return this;
             }
 
-            /**
-             * @param value The number of the enum to look for.
-             * @return The enum associated with the given number.
-             * @deprecated Use {@link #forNumber(int)} instead.
-             */
-            @java.lang.Deprecated
-            public static ConstraintCase valueOf(int value) {
-                return forNumber(value);
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
             }
 
-            public static ConstraintCase forNumber(int value) {
-                switch(value) {
-                    case 2:
-                        return CUSTOM;
-                    case 3:
-                        return SCHEDULE;
-                    case 4:
-                        return ENDPOINT_LOCATION;
-                    case 5:
-                        return ENDPOINT_PRIORITY;
-                    case 6:
-                        return SLA_CAPACITY;
-                    case 7:
-                        return SLA_LATENCY;
-                    case 8:
-                        return SLA_AVAILABILITY;
-                    case 9:
-                        return SLA_ISOLATION;
-                    case 10:
-                        return EXCLUSIONS;
-                    case 0:
-                        return CONSTRAINT_NOT_SET;
-                    default:
-                        return null;
+            @java.lang.Override
+            public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() {
+                return context.ContextOuterClass.QoSProfileId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.QoSProfileId build() {
+                context.ContextOuterClass.QoSProfileId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
                 }
+                return result;
             }
 
-            public int getNumber() {
-                return this.value;
+            @java.lang.Override
+            public context.ContextOuterClass.QoSProfileId buildPartial() {
+                context.ContextOuterClass.QoSProfileId result = new context.ContextOuterClass.QoSProfileId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
             }
-        }
 
-        public ConstraintCase getConstraintCase() {
-            return ConstraintCase.forNumber(constraintCase_);
-        }
+            private void buildPartial0(context.ContextOuterClass.QoSProfileId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build();
+                }
+            }
 
-        public static final int ACTION_FIELD_NUMBER = 1;
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.QoSProfileId) {
+                    return mergeFrom((context.ContextOuterClass.QoSProfileId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-        private int action_;
+            public Builder mergeFrom(context.ContextOuterClass.QoSProfileId other) {
+                if (other == context.ContextOuterClass.QoSProfileId.getDefaultInstance())
+                    return this;
+                if (other.hasQosProfileId()) {
+                    mergeQosProfileId(other.getQosProfileId());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-        /**
-         * .context.ConstraintActionEnum action = 1;
-         * @return The enum numeric value on the wire for action.
-         */
-        @java.lang.Override
-        public int getActionValue() {
-            return action_;
-        }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-        /**
-         * .context.ConstraintActionEnum action = 1;
-         * @return The action.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.ConstraintActionEnum getAction() {
-            @SuppressWarnings("deprecation")
-            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
-            return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
-        }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
+                try {
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-        public static final int CUSTOM_FIELD_NUMBER = 2;
+            private int bitField0_;
 
-        /**
-         * .context.Constraint_Custom custom = 2;
-         * @return Whether the custom field is set.
-         */
-        @java.lang.Override
-        public boolean hasCustom() {
-            return constraintCase_ == 2;
-        }
+            private context.ContextOuterClass.Uuid qosProfileId_;
 
-        /**
-         * .context.Constraint_Custom custom = 2;
-         * @return The custom.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_Custom getCustom() {
-            if (constraintCase_ == 2) {
-                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            private com.google.protobuf.SingleFieldBuilderV3 qosProfileIdBuilder_;
+
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             * @return Whether the qosProfileId field is set.
+             */
+            public boolean hasQosProfileId() {
+                return ((bitField0_ & 0x00000001) != 0);
             }
-            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-        }
 
-        /**
-         * .context.Constraint_Custom custom = 2;
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
-            if (constraintCase_ == 2) {
-                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             * @return The qosProfileId.
+             */
+            public context.ContextOuterClass.Uuid getQosProfileId() {
+                if (qosProfileIdBuilder_ == null) {
+                    return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
+                } else {
+                    return qosProfileIdBuilder_.getMessage();
+                }
             }
-            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-        }
 
-        public static final int SCHEDULE_FIELD_NUMBER = 3;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public Builder setQosProfileId(context.ContextOuterClass.Uuid value) {
+                if (qosProfileIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    qosProfileId_ = value;
+                } else {
+                    qosProfileIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         * @return Whether the schedule field is set.
-         */
-        @java.lang.Override
-        public boolean hasSchedule() {
-            return constraintCase_ == 3;
-        }
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public Builder setQosProfileId(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (qosProfileIdBuilder_ == null) {
+                    qosProfileId_ = builderForValue.build();
+                } else {
+                    qosProfileIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         * @return The schedule.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_Schedule getSchedule() {
-            if (constraintCase_ == 3) {
-                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public Builder mergeQosProfileId(context.ContextOuterClass.Uuid value) {
+                if (qosProfileIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getQosProfileIdBuilder().mergeFrom(value);
+                    } else {
+                        qosProfileId_ = value;
+                    }
+                } else {
+                    qosProfileIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
             }
-            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-        }
 
-        /**
-         * .context.Constraint_Schedule schedule = 3;
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
-            if (constraintCase_ == 3) {
-                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public Builder clearQosProfileId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                qosProfileId_ = null;
+                if (qosProfileIdBuilder_ != null) {
+                    qosProfileIdBuilder_.dispose();
+                    qosProfileIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
             }
-            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-        }
 
-        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public context.ContextOuterClass.Uuid.Builder getQosProfileIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getQosProfileIdFieldBuilder().getBuilder();
+            }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         * @return Whether the endpointLocation field is set.
-         */
-        @java.lang.Override
-        public boolean hasEndpointLocation() {
-            return constraintCase_ == 4;
-        }
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() {
+                if (qosProfileIdBuilder_ != null) {
+                    return qosProfileIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
+                }
+            }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         * @return The endpointLocation.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
-            if (constraintCase_ == 4) {
-                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            /**
+             * .context.Uuid qos_profile_id = 1;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getQosProfileIdFieldBuilder() {
+                if (qosProfileIdBuilder_ == null) {
+                    qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getQosProfileId(), getParentForChildren(), isClean());
+                    qosProfileId_ = null;
+                }
+                return qosProfileIdBuilder_;
             }
-            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-        }
 
-        /**
-         * .context.Constraint_EndPointLocation endpoint_location = 4;
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
-            if (constraintCase_ == 4) {
-                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
             }
-            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.QoSProfileId)
         }
 
-        public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 5;
+        // @@protoc_insertion_point(class_scope:context.QoSProfileId)
+        private static final context.ContextOuterClass.QoSProfileId DEFAULT_INSTANCE;
 
-        /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
-         * @return Whether the endpointPriority field is set.
-         */
-        @java.lang.Override
-        public boolean hasEndpointPriority() {
-            return constraintCase_ == 5;
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.QoSProfileId();
         }
 
-        /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
-         * @return The endpointPriority.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
-            if (constraintCase_ == 5) {
-                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+        public static context.ContextOuterClass.QoSProfileId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
         }
 
-        /**
-         * .context.Constraint_EndPointPriority endpoint_priority = 5;
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
-            if (constraintCase_ == 5) {
-                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+        private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() {
+
+            @java.lang.Override
+            public QoSProfileId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
-            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-        }
+        };
 
-        public static final int SLA_CAPACITY_FIELD_NUMBER = 6;
+        public static com.google.protobuf.Parser parser() {
+            return PARSER;
+        }
 
-        /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
-         * @return Whether the slaCapacity field is set.
-         */
         @java.lang.Override
-        public boolean hasSlaCapacity() {
-            return constraintCase_ == 6;
+        public com.google.protobuf.Parser getParserForType() {
+            return PARSER;
         }
 
-        /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
-         * @return The slaCapacity.
-         */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
-            if (constraintCase_ == 6) {
-                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+        public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
         }
+    }
+
+    public interface Constraint_QoSProfileOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_QoSProfile)
+    com.google.protobuf.MessageOrBuilder {
 
         /**
-         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         * .context.QoSProfileId qos_profile_id = 1;
+         * @return Whether the qosProfileId field is set.
          */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
-            if (constraintCase_ == 6) {
-                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-        }
+        boolean hasQosProfileId();
 
-        public static final int SLA_LATENCY_FIELD_NUMBER = 7;
+        /**
+         * .context.QoSProfileId qos_profile_id = 1;
+         * @return The qosProfileId.
+         */
+        context.ContextOuterClass.QoSProfileId getQosProfileId();
 
         /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
-         * @return Whether the slaLatency field is set.
+         * .context.QoSProfileId qos_profile_id = 1;
          */
-        @java.lang.Override
-        public boolean hasSlaLatency() {
-            return constraintCase_ == 7;
-        }
+        context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder();
 
         /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
-         * @return The slaLatency.
+         * string qos_profile_name = 2;
+         * @return The qosProfileName.
          */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
-            if (constraintCase_ == 7) {
-                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-        }
+        java.lang.String getQosProfileName();
 
         /**
-         * .context.Constraint_SLA_Latency sla_latency = 7;
+         * string qos_profile_name = 2;
+         * @return The bytes for qosProfileName.
          */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
-            if (constraintCase_ == 7) {
-                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+        com.google.protobuf.ByteString getQosProfileNameBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.Constraint_QoSProfile}
+     */
+    public static final class Constraint_QoSProfile extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_QoSProfile)
+    Constraint_QoSProfileOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Constraint_QoSProfile.newBuilder() to construct.
+        private Constraint_QoSProfile(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+            super(builder);
         }
 
-        public static final int SLA_AVAILABILITY_FIELD_NUMBER = 8;
+        private Constraint_QoSProfile() {
+            qosProfileName_ = "";
+        }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         * @return Whether the slaAvailability field is set.
-         */
         @java.lang.Override
-        public boolean hasSlaAvailability() {
-            return constraintCase_ == 8;
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_QoSProfile();
         }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         * @return The slaAvailability.
-         */
-        @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
-            if (constraintCase_ == 8) {
-                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
         }
 
-        /**
-         * .context.Constraint_SLA_Availability sla_availability = 8;
-         */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
-            if (constraintCase_ == 8) {
-                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class);
         }
 
-        public static final int SLA_ISOLATION_FIELD_NUMBER = 9;
+        public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.QoSProfileId qosProfileId_;
 
         /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
-         * @return Whether the slaIsolation field is set.
+         * .context.QoSProfileId qos_profile_id = 1;
+         * @return Whether the qosProfileId field is set.
          */
         @java.lang.Override
-        public boolean hasSlaIsolation() {
-            return constraintCase_ == 9;
+        public boolean hasQosProfileId() {
+            return qosProfileId_ != null;
         }
 
         /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
-         * @return The slaIsolation.
+         * .context.QoSProfileId qos_profile_id = 1;
+         * @return The qosProfileId.
          */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
-            if (constraintCase_ == 9) {
-                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        public context.ContextOuterClass.QoSProfileId getQosProfileId() {
+            return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
         }
 
         /**
-         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         * .context.QoSProfileId qos_profile_id = 1;
          */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
-            if (constraintCase_ == 9) {
-                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-            }
-            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() {
+            return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
         }
 
-        public static final int EXCLUSIONS_FIELD_NUMBER = 10;
+        public static final int QOS_PROFILE_NAME_FIELD_NUMBER = 2;
 
-        /**
-         * .context.Constraint_Exclusions exclusions = 10;
-         * @return Whether the exclusions field is set.
-         */
-        @java.lang.Override
-        public boolean hasExclusions() {
-            return constraintCase_ == 10;
-        }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object qosProfileName_ = "";
 
         /**
-         * .context.Constraint_Exclusions exclusions = 10;
-         * @return The exclusions.
+         * string qos_profile_name = 2;
+         * @return The qosProfileName.
          */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
-            if (constraintCase_ == 10) {
-                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+        public java.lang.String getQosProfileName() {
+            java.lang.Object ref = qosProfileName_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                qosProfileName_ = s;
+                return s;
             }
-            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
         }
 
         /**
-         * .context.Constraint_Exclusions exclusions = 10;
+         * string qos_profile_name = 2;
+         * @return The bytes for qosProfileName.
          */
         @java.lang.Override
-        public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
-            if (constraintCase_ == 10) {
-                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+        public com.google.protobuf.ByteString getQosProfileNameBytes() {
+            java.lang.Object ref = qosProfileName_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                qosProfileName_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
             }
-            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -68777,37 +67438,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
-                output.writeEnum(1, action_);
-            }
-            if (constraintCase_ == 2) {
-                output.writeMessage(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
-            }
-            if (constraintCase_ == 3) {
-                output.writeMessage(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
-            }
-            if (constraintCase_ == 4) {
-                output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-            }
-            if (constraintCase_ == 5) {
-                output.writeMessage(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-            }
-            if (constraintCase_ == 6) {
-                output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-            }
-            if (constraintCase_ == 7) {
-                output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-            }
-            if (constraintCase_ == 8) {
-                output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-            }
-            if (constraintCase_ == 9) {
-                output.writeMessage(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            if (qosProfileId_ != null) {
+                output.writeMessage(1, getQosProfileId());
             }
-            if (constraintCase_ == 10) {
-                output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, qosProfileName_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -68816,37 +67453,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
-                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
-            }
-            if (constraintCase_ == 2) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
-            }
-            if (constraintCase_ == 3) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
-            }
-            if (constraintCase_ == 4) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-            }
-            if (constraintCase_ == 5) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-            }
-            if (constraintCase_ == 6) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-            }
-            if (constraintCase_ == 7) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-            }
-            if (constraintCase_ == 8) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-            }
-            if (constraintCase_ == 9) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            if (qosProfileId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId());
             }
-            if (constraintCase_ == 10) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, qosProfileName_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68856,55 +67469,19 @@ public final class ContextOuterClass {
             if (obj == this) {
                 return true;
             }
-            if (!(obj instanceof context.ContextOuterClass.Constraint)) {
+            if (!(obj instanceof context.ContextOuterClass.Constraint_QoSProfile)) {
                 return super.equals(obj);
             }
-            context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;
-            if (action_ != other.action_)
+            context.ContextOuterClass.Constraint_QoSProfile other = (context.ContextOuterClass.Constraint_QoSProfile) obj;
+            if (hasQosProfileId() != other.hasQosProfileId())
                 return false;
-            if (!getConstraintCase().equals(other.getConstraintCase()))
+            if (hasQosProfileId()) {
+                if (!getQosProfileId().equals(other.getQosProfileId()))
+                    return false;
+            }
+            if (!getQosProfileName().equals(other.getQosProfileName()))
                 return false;
-            switch(constraintCase_) {
-                case 2:
-                    if (!getCustom().equals(other.getCustom()))
-                        return false;
-                    break;
-                case 3:
-                    if (!getSchedule().equals(other.getSchedule()))
-                        return false;
-                    break;
-                case 4:
-                    if (!getEndpointLocation().equals(other.getEndpointLocation()))
-                        return false;
-                    break;
-                case 5:
-                    if (!getEndpointPriority().equals(other.getEndpointPriority()))
-                        return false;
-                    break;
-                case 6:
-                    if (!getSlaCapacity().equals(other.getSlaCapacity()))
-                        return false;
-                    break;
-                case 7:
-                    if (!getSlaLatency().equals(other.getSlaLatency()))
-                        return false;
-                    break;
-                case 8:
-                    if (!getSlaAvailability().equals(other.getSlaAvailability()))
-                        return false;
-                    break;
-                case 9:
-                    if (!getSlaIsolation().equals(other.getSlaIsolation()))
-                        return false;
-                    break;
-                case 10:
-                    if (!getExclusions().equals(other.getExclusions()))
-                        return false;
-                    break;
-                case 0:
-                default:
-            }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -68916,98 +67493,62 @@ public final class ContextOuterClass {
             }
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
-            hash = (37 * hash) + ACTION_FIELD_NUMBER;
-            hash = (53 * hash) + action_;
-            switch(constraintCase_) {
-                case 2:
-                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
-                    hash = (53 * hash) + getCustom().hashCode();
-                    break;
-                case 3:
-                    hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
-                    hash = (53 * hash) + getSchedule().hashCode();
-                    break;
-                case 4:
-                    hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
-                    hash = (53 * hash) + getEndpointLocation().hashCode();
-                    break;
-                case 5:
-                    hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
-                    hash = (53 * hash) + getEndpointPriority().hashCode();
-                    break;
-                case 6:
-                    hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
-                    hash = (53 * hash) + getSlaCapacity().hashCode();
-                    break;
-                case 7:
-                    hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
-                    hash = (53 * hash) + getSlaLatency().hashCode();
-                    break;
-                case 8:
-                    hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
-                    hash = (53 * hash) + getSlaAvailability().hashCode();
-                    break;
-                case 9:
-                    hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
-                    hash = (53 * hash) + getSlaIsolation().hashCode();
-                    break;
-                case 10:
-                    hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
-                    hash = (53 * hash) + getExclusions().hashCode();
-                    break;
-                case 0:
-                default:
+            if (hasQosProfileId()) {
+                hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getQosProfileId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (37 * hash) + QOS_PROFILE_NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getQosProfileName().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
@@ -69020,7 +67561,7 @@ public final class ContextOuterClass {
             return DEFAULT_INSTANCE.toBuilder();
         }
 
-        public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_QoSProfile prototype) {
             return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
         }
 
@@ -69036,57 +67577,54 @@ public final class ContextOuterClass {
         }
 
         /**
-         * Protobuf type {@code context.Constraint}
+         * Protobuf type {@code context.Constraint_QoSProfile}
          */
-        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Constraint)
-        context.ContextOuterClass.ConstraintOrBuilder {
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Constraint_QoSProfile)
+        context.ContextOuterClass.Constraint_QoSProfileOrBuilder {
 
             public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
             }
 
             @java.lang.Override
             protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-                return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class);
             }
 
-            // Construct using context.ContextOuterClass.Constraint.newBuilder()
+            // Construct using context.ContextOuterClass.Constraint_QoSProfile.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                action_ = 0;
-                constraintCase_ = 0;
-                constraint_ = null;
+                bitField0_ = 0;
+                qosProfileId_ = null;
+                if (qosProfileIdBuilder_ != null) {
+                    qosProfileIdBuilder_.dispose();
+                    qosProfileIdBuilder_ = null;
+                }
+                qosProfileName_ = "";
                 return this;
             }
 
             @java.lang.Override
             public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
-                return context.ContextOuterClass.Constraint.getDefaultInstance();
+            public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.Constraint build() {
-                context.ContextOuterClass.Constraint result = buildPartial();
+            public context.ContextOuterClass.Constraint_QoSProfile build() {
+                context.ContextOuterClass.Constraint_QoSProfile result = buildPartial();
                 if (!result.isInitialized()) {
                     throw newUninitializedMessageException(result);
                 }
@@ -69094,175 +67632,47 @@ public final class ContextOuterClass {
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.Constraint buildPartial() {
-                context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
-                result.action_ = action_;
-                if (constraintCase_ == 2) {
-                    if (customBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = customBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 3) {
-                    if (scheduleBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = scheduleBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 4) {
-                    if (endpointLocationBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = endpointLocationBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 5) {
-                    if (endpointPriorityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = endpointPriorityBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 6) {
-                    if (slaCapacityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaCapacityBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 7) {
-                    if (slaLatencyBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaLatencyBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 8) {
-                    if (slaAvailabilityBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaAvailabilityBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 9) {
-                    if (slaIsolationBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = slaIsolationBuilder_.build();
-                    }
-                }
-                if (constraintCase_ == 10) {
-                    if (exclusionsBuilder_ == null) {
-                        result.constraint_ = constraint_;
-                    } else {
-                        result.constraint_ = exclusionsBuilder_.build();
-                    }
+            public context.ContextOuterClass.Constraint_QoSProfile buildPartial() {
+                context.ContextOuterClass.Constraint_QoSProfile result = new context.ContextOuterClass.Constraint_QoSProfile(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.constraintCase_ = constraintCase_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(context.ContextOuterClass.Constraint_QoSProfile result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.qosProfileName_ = qosProfileName_;
+                }
             }
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof context.ContextOuterClass.Constraint) {
-                    return mergeFrom((context.ContextOuterClass.Constraint) other);
+                if (other instanceof context.ContextOuterClass.Constraint_QoSProfile) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_QoSProfile) other);
                 } else {
                     super.mergeFrom(other);
                     return this;
                 }
             }
 
-            public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
-                if (other == context.ContextOuterClass.Constraint.getDefaultInstance())
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_QoSProfile other) {
+                if (other == context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance())
                     return this;
-                if (other.action_ != 0) {
-                    setActionValue(other.getActionValue());
+                if (other.hasQosProfileId()) {
+                    mergeQosProfileId(other.getQosProfileId());
                 }
-                switch(other.getConstraintCase()) {
-                    case CUSTOM:
-                        {
-                            mergeCustom(other.getCustom());
-                            break;
-                        }
-                    case SCHEDULE:
-                        {
-                            mergeSchedule(other.getSchedule());
-                            break;
-                        }
-                    case ENDPOINT_LOCATION:
-                        {
-                            mergeEndpointLocation(other.getEndpointLocation());
-                            break;
-                        }
-                    case ENDPOINT_PRIORITY:
-                        {
-                            mergeEndpointPriority(other.getEndpointPriority());
-                            break;
-                        }
-                    case SLA_CAPACITY:
-                        {
-                            mergeSlaCapacity(other.getSlaCapacity());
-                            break;
-                        }
-                    case SLA_LATENCY:
-                        {
-                            mergeSlaLatency(other.getSlaLatency());
-                            break;
-                        }
-                    case SLA_AVAILABILITY:
-                        {
-                            mergeSlaAvailability(other.getSlaAvailability());
-                            break;
-                        }
-                    case SLA_ISOLATION:
-                        {
-                            mergeSlaIsolation(other.getSlaIsolation());
-                            break;
-                        }
-                    case EXCLUSIONS:
-                        {
-                            mergeExclusions(other.getExclusions());
-                            break;
-                        }
-                    case CONSTRAINT_NOT_SET:
-                        {
-                            break;
-                        }
+                if (!other.getQosProfileName().isEmpty()) {
+                    qosProfileName_ = other.qosProfileName_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -69274,1359 +67684,3834 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                context.ContextOuterClass.Constraint parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    qosProfileName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
-            private int constraintCase_ = 0;
-
-            private java.lang.Object constraint_;
-
-            public ConstraintCase getConstraintCase() {
-                return ConstraintCase.forNumber(constraintCase_);
-            }
-
-            public Builder clearConstraint() {
-                constraintCase_ = 0;
-                constraint_ = null;
-                onChanged();
-                return this;
-            }
-
-            private int action_ = 0;
-
-            /**
-             * .context.ConstraintActionEnum action = 1;
-             * @return The enum numeric value on the wire for action.
-             */
-            @java.lang.Override
-            public int getActionValue() {
-                return action_;
-            }
-
-            /**
-             * .context.ConstraintActionEnum action = 1;
-             * @param value The enum numeric value on the wire for action to set.
-             * @return This builder for chaining.
-             */
-            public Builder setActionValue(int value) {
-                action_ = value;
-                onChanged();
-                return this;
-            }
-
-            /**
-             * .context.ConstraintActionEnum action = 1;
-             * @return The action.
-             */
-            @java.lang.Override
-            public context.ContextOuterClass.ConstraintActionEnum getAction() {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
-                return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
-            }
-
-            /**
-             * .context.ConstraintActionEnum action = 1;
-             * @param value The action to set.
-             * @return This builder for chaining.
-             */
-            public Builder setAction(context.ContextOuterClass.ConstraintActionEnum value) {
-                if (value == null) {
-                    throw new NullPointerException();
-                }
-                action_ = value.getNumber();
-                onChanged();
-                return this;
-            }
+            private int bitField0_;
 
-            /**
-             * .context.ConstraintActionEnum action = 1;
-             * @return This builder for chaining.
-             */
-            public Builder clearAction() {
-                action_ = 0;
-                onChanged();
-                return this;
-            }
+            private context.ContextOuterClass.QoSProfileId qosProfileId_;
 
-            private com.google.protobuf.SingleFieldBuilderV3 customBuilder_;
+            private com.google.protobuf.SingleFieldBuilderV3 qosProfileIdBuilder_;
 
             /**
-             * .context.Constraint_Custom custom = 2;
-             * @return Whether the custom field is set.
+             * .context.QoSProfileId qos_profile_id = 1;
+             * @return Whether the qosProfileId field is set.
              */
-            @java.lang.Override
-            public boolean hasCustom() {
-                return constraintCase_ == 2;
+            public boolean hasQosProfileId() {
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
-             * @return The custom.
+             * .context.QoSProfileId qos_profile_id = 1;
+             * @return The qosProfileId.
              */
-            @java.lang.Override
-            public context.ContextOuterClass.Constraint_Custom getCustom() {
-                if (customBuilder_ == null) {
-                    if (constraintCase_ == 2) {
-                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
-                    }
-                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+            public context.ContextOuterClass.QoSProfileId getQosProfileId() {
+                if (qosProfileIdBuilder_ == null) {
+                    return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
                 } else {
-                    if (constraintCase_ == 2) {
-                        return customBuilder_.getMessage();
-                    }
-                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                    return qosProfileIdBuilder_.getMessage();
                 }
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
-                if (customBuilder_ == null) {
+            public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId value) {
+                if (qosProfileIdBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
-                    constraint_ = value;
-                    onChanged();
+                    qosProfileId_ = value;
                 } else {
-                    customBuilder_.setMessage(value);
+                    qosProfileIdBuilder_.setMessage(value);
                 }
-                constraintCase_ = 2;
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            public Builder setCustom(context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
-                if (customBuilder_ == null) {
-                    constraint_ = builderForValue.build();
-                    onChanged();
+            public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId.Builder builderForValue) {
+                if (qosProfileIdBuilder_ == null) {
+                    qosProfileId_ = builderForValue.build();
                 } else {
-                    customBuilder_.setMessage(builderForValue.build());
+                    qosProfileIdBuilder_.setMessage(builderForValue.build());
                 }
-                constraintCase_ = 2;
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
-                if (customBuilder_ == null) {
-                    if (constraintCase_ == 2 && constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
-                        constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_).mergeFrom(value).buildPartial();
+            public Builder mergeQosProfileId(context.ContextOuterClass.QoSProfileId value) {
+                if (qosProfileIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.QoSProfileId.getDefaultInstance()) {
+                        getQosProfileIdBuilder().mergeFrom(value);
                     } else {
-                        constraint_ = value;
+                        qosProfileId_ = value;
                     }
-                    onChanged();
                 } else {
-                    if (constraintCase_ == 2) {
-                        customBuilder_.mergeFrom(value);
-                    }
-                    customBuilder_.setMessage(value);
+                    qosProfileIdBuilder_.mergeFrom(value);
                 }
-                constraintCase_ = 2;
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            public Builder clearCustom() {
-                if (customBuilder_ == null) {
-                    if (constraintCase_ == 2) {
-                        constraintCase_ = 0;
-                        constraint_ = null;
-                        onChanged();
-                    }
-                } else {
-                    if (constraintCase_ == 2) {
-                        constraintCase_ = 0;
-                        constraint_ = null;
-                    }
-                    customBuilder_.clear();
+            public Builder clearQosProfileId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                qosProfileId_ = null;
+                if (qosProfileIdBuilder_ != null) {
+                    qosProfileIdBuilder_.dispose();
+                    qosProfileIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
-                return getCustomFieldBuilder().getBuilder();
+            public context.ContextOuterClass.QoSProfileId.Builder getQosProfileIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getQosProfileIdFieldBuilder().getBuilder();
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            @java.lang.Override
-            public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
-                if ((constraintCase_ == 2) && (customBuilder_ != null)) {
-                    return customBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() {
+                if (qosProfileIdBuilder_ != null) {
+                    return qosProfileIdBuilder_.getMessageOrBuilder();
                 } else {
-                    if (constraintCase_ == 2) {
-                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
-                    }
-                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                    return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
                 }
             }
 
             /**
-             * .context.Constraint_Custom custom = 2;
+             * .context.QoSProfileId qos_profile_id = 1;
              */
-            private com.google.protobuf.SingleFieldBuilderV3 getCustomFieldBuilder() {
-                if (customBuilder_ == null) {
-                    if (!(constraintCase_ == 2)) {
-                        constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-                    }
-                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Custom) constraint_, getParentForChildren(), isClean());
-                    constraint_ = null;
+            private com.google.protobuf.SingleFieldBuilderV3 getQosProfileIdFieldBuilder() {
+                if (qosProfileIdBuilder_ == null) {
+                    qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getQosProfileId(), getParentForChildren(), isClean());
+                    qosProfileId_ = null;
                 }
-                constraintCase_ = 2;
-                onChanged();
-                ;
-                return customBuilder_;
+                return qosProfileIdBuilder_;
             }
 
-            private com.google.protobuf.SingleFieldBuilderV3 scheduleBuilder_;
-
-            /**
-             * .context.Constraint_Schedule schedule = 3;
-             * @return Whether the schedule field is set.
-             */
-            @java.lang.Override
-            public boolean hasSchedule() {
-                return constraintCase_ == 3;
-            }
+            private java.lang.Object qosProfileName_ = "";
 
             /**
-             * .context.Constraint_Schedule schedule = 3;
-             * @return The schedule.
+             * string qos_profile_name = 2;
+             * @return The qosProfileName.
              */
-            @java.lang.Override
-            public context.ContextOuterClass.Constraint_Schedule getSchedule() {
-                if (scheduleBuilder_ == null) {
-                    if (constraintCase_ == 3) {
-                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-                    }
-                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+            public java.lang.String getQosProfileName() {
+                java.lang.Object ref = qosProfileName_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    qosProfileName_ = s;
+                    return s;
                 } else {
-                    if (constraintCase_ == 3) {
-                        return scheduleBuilder_.getMessage();
-                    }
-                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                    return (java.lang.String) ref;
                 }
             }
 
             /**
-             * .context.Constraint_Schedule schedule = 3;
+             * string qos_profile_name = 2;
+             * @return The bytes for qosProfileName.
              */
-            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
-                if (scheduleBuilder_ == null) {
-                    if (value == null) {
-                        throw new NullPointerException();
-                    }
-                    constraint_ = value;
-                    onChanged();
+            public com.google.protobuf.ByteString getQosProfileNameBytes() {
+                java.lang.Object ref = qosProfileName_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    qosProfileName_ = b;
+                    return b;
                 } else {
-                    scheduleBuilder_.setMessage(value);
+                    return (com.google.protobuf.ByteString) ref;
                 }
-                constraintCase_ = 3;
-                return this;
             }
 
             /**
-             * .context.Constraint_Schedule schedule = 3;
+             * string qos_profile_name = 2;
+             * @param value The qosProfileName to set.
+             * @return This builder for chaining.
              */
-            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
-                if (scheduleBuilder_ == null) {
-                    constraint_ = builderForValue.build();
-                    onChanged();
-                } else {
-                    scheduleBuilder_.setMessage(builderForValue.build());
+            public Builder setQosProfileName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
                 }
-                constraintCase_ = 3;
+                qosProfileName_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Schedule schedule = 3;
+             * string qos_profile_name = 2;
+             * @return This builder for chaining.
              */
-            public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
-                if (scheduleBuilder_ == null) {
-                    if (constraintCase_ == 3 && constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
-                        constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_).mergeFrom(value).buildPartial();
-                    } else {
-                        constraint_ = value;
-                    }
-                    onChanged();
-                } else {
-                    if (constraintCase_ == 3) {
-                        scheduleBuilder_.mergeFrom(value);
-                    }
-                    scheduleBuilder_.setMessage(value);
-                }
-                constraintCase_ = 3;
+            public Builder clearQosProfileName() {
+                qosProfileName_ = getDefaultInstance().getQosProfileName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
                 return this;
             }
 
             /**
-             * .context.Constraint_Schedule schedule = 3;
+             * string qos_profile_name = 2;
+             * @param value The bytes for qosProfileName to set.
+             * @return This builder for chaining.
              */
-            public Builder clearSchedule() {
-                if (scheduleBuilder_ == null) {
-                    if (constraintCase_ == 3) {
-                        constraintCase_ = 0;
-                        constraint_ = null;
-                        onChanged();
-                    }
-                } else {
-                    if (constraintCase_ == 3) {
-                        constraintCase_ = 0;
-                        constraint_ = null;
-                    }
-                    scheduleBuilder_.clear();
+            public Builder setQosProfileNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
                 }
+                checkByteStringIsUtf8(value);
+                qosProfileName_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
-            /**
-             * .context.Constraint_Schedule schedule = 3;
-             */
-            public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
-                return getScheduleFieldBuilder().getBuilder();
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
             }
 
-            /**
-             * .context.Constraint_Schedule schedule = 3;
-             */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
-                if ((constraintCase_ == 3) && (scheduleBuilder_ != null)) {
-                    return scheduleBuilder_.getMessageOrBuilder();
-                } else {
-                    if (constraintCase_ == 3) {
-                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-                    }
-                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-                }
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
             }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_QoSProfile)
+        }
 
-            /**
-             * .context.Constraint_Schedule schedule = 3;
-             */
-            private com.google.protobuf.SingleFieldBuilderV3 getScheduleFieldBuilder() {
-                if (scheduleBuilder_ == null) {
-                    if (!(constraintCase_ == 3)) {
-                        constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-                    }
-                    scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Schedule) constraint_, getParentForChildren(), isClean());
-                    constraint_ = null;
-                }
-                constraintCase_ = 3;
-                onChanged();
-                ;
-                return scheduleBuilder_;
-            }
+        // @@protoc_insertion_point(class_scope:context.Constraint_QoSProfile)
+        private static final context.ContextOuterClass.Constraint_QoSProfile DEFAULT_INSTANCE;
 
-            private com.google.protobuf.SingleFieldBuilderV3 endpointLocationBuilder_;
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_QoSProfile();
+        }
 
-            /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
-             * @return Whether the endpointLocation field is set.
+        public static context.ContextOuterClass.Constraint_QoSProfile getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() {
+
+            @java.lang.Override
+            public Constraint_QoSProfile parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
+            }
+        };
+
+        public static com.google.protobuf.Parser parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConstraintOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * .context.ConstraintActionEnum action = 1;
+         * @return The enum numeric value on the wire for action.
+         */
+        int getActionValue();
+
+        /**
+         * .context.ConstraintActionEnum action = 1;
+         * @return The action.
+         */
+        context.ContextOuterClass.ConstraintActionEnum getAction();
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         * @return Whether the custom field is set.
+         */
+        boolean hasCustom();
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         * @return The custom.
+         */
+        context.ContextOuterClass.Constraint_Custom getCustom();
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         */
+        context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         * @return Whether the schedule field is set.
+         */
+        boolean hasSchedule();
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         * @return The schedule.
+         */
+        context.ContextOuterClass.Constraint_Schedule getSchedule();
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         */
+        context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         * @return Whether the endpointLocation field is set.
+         */
+        boolean hasEndpointLocation();
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         * @return The endpointLocation.
+         */
+        context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         */
+        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         * @return Whether the endpointPriority field is set.
+         */
+        boolean hasEndpointPriority();
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         * @return The endpointPriority.
+         */
+        context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         */
+        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         * @return Whether the slaCapacity field is set.
+         */
+        boolean hasSlaCapacity();
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         * @return The slaCapacity.
+         */
+        context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         */
+        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         * @return Whether the slaLatency field is set.
+         */
+        boolean hasSlaLatency();
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         * @return The slaLatency.
+         */
+        context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         */
+        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         * @return Whether the slaAvailability field is set.
+         */
+        boolean hasSlaAvailability();
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         * @return The slaAvailability.
+         */
+        context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         */
+        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         * @return Whether the slaIsolation field is set.
+         */
+        boolean hasSlaIsolation();
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         * @return The slaIsolation.
+         */
+        context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         */
+        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         * @return Whether the exclusions field is set.
+         */
+        boolean hasExclusions();
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         * @return The exclusions.
+         */
+        context.ContextOuterClass.Constraint_Exclusions getExclusions();
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         */
+        context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         * @return Whether the qosProfile field is set.
+         */
+        boolean hasQosProfile();
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         * @return The qosProfile.
+         */
+        context.ContextOuterClass.Constraint_QoSProfile getQosProfile();
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         */
+        context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder();
+
+        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
+    }
+
+    /**
+     * Protobuf type {@code context.Constraint}
+     */
+    public static final class Constraint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint)
+    ConstraintOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Constraint.newBuilder() to construct.
+        private Constraint(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+            super(builder);
+        }
+
+        private Constraint() {
+            action_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+        }
+
+        private int constraintCase_ = 0;
+
+        @SuppressWarnings("serial")
+        private java.lang.Object constraint_;
+
+        public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+
+            CUSTOM(2),
+            SCHEDULE(3),
+            ENDPOINT_LOCATION(4),
+            ENDPOINT_PRIORITY(5),
+            SLA_CAPACITY(6),
+            SLA_LATENCY(7),
+            SLA_AVAILABILITY(8),
+            SLA_ISOLATION(9),
+            EXCLUSIONS(10),
+            QOS_PROFILE(11),
+            CONSTRAINT_NOT_SET(0);
+
+            private final int value;
+
+            private ConstraintCase(int value) {
+                this.value = value;
+            }
+
+            /**
+             * @param value The number of the enum to look for.
+             * @return The enum associated with the given number.
+             * @deprecated Use {@link #forNumber(int)} instead.
+             */
+            @java.lang.Deprecated
+            public static ConstraintCase valueOf(int value) {
+                return forNumber(value);
+            }
+
+            public static ConstraintCase forNumber(int value) {
+                switch(value) {
+                    case 2:
+                        return CUSTOM;
+                    case 3:
+                        return SCHEDULE;
+                    case 4:
+                        return ENDPOINT_LOCATION;
+                    case 5:
+                        return ENDPOINT_PRIORITY;
+                    case 6:
+                        return SLA_CAPACITY;
+                    case 7:
+                        return SLA_LATENCY;
+                    case 8:
+                        return SLA_AVAILABILITY;
+                    case 9:
+                        return SLA_ISOLATION;
+                    case 10:
+                        return EXCLUSIONS;
+                    case 11:
+                        return QOS_PROFILE;
+                    case 0:
+                        return CONSTRAINT_NOT_SET;
+                    default:
+                        return null;
+                }
+            }
+
+            public int getNumber() {
+                return this.value;
+            }
+        }
+
+        public ConstraintCase getConstraintCase() {
+            return ConstraintCase.forNumber(constraintCase_);
+        }
+
+        public static final int ACTION_FIELD_NUMBER = 1;
+
+        private int action_ = 0;
+
+        /**
+         * .context.ConstraintActionEnum action = 1;
+         * @return The enum numeric value on the wire for action.
+         */
+        @java.lang.Override
+        public int getActionValue() {
+            return action_;
+        }
+
+        /**
+         * .context.ConstraintActionEnum action = 1;
+         * @return The action.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConstraintActionEnum getAction() {
+            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+            return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int CUSTOM_FIELD_NUMBER = 2;
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         * @return Whether the custom field is set.
+         */
+        @java.lang.Override
+        public boolean hasCustom() {
+            return constraintCase_ == 2;
+        }
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         * @return The custom.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Custom getCustom() {
+            if (constraintCase_ == 2) {
+                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_Custom custom = 2;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
+            if (constraintCase_ == 2) {
+                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+        }
+
+        public static final int SCHEDULE_FIELD_NUMBER = 3;
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         * @return Whether the schedule field is set.
+         */
+        @java.lang.Override
+        public boolean hasSchedule() {
+            return constraintCase_ == 3;
+        }
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         * @return The schedule.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Schedule getSchedule() {
+            if (constraintCase_ == 3) {
+                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_Schedule schedule = 3;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
+            if (constraintCase_ == 3) {
+                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+        }
+
+        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         * @return Whether the endpointLocation field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointLocation() {
+            return constraintCase_ == 4;
+        }
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         * @return The endpointLocation.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
+            if (constraintCase_ == 4) {
+                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_EndPointLocation endpoint_location = 4;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
+            if (constraintCase_ == 4) {
+                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+        }
+
+        public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 5;
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         * @return Whether the endpointPriority field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointPriority() {
+            return constraintCase_ == 5;
+        }
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         * @return The endpointPriority.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
+            if (constraintCase_ == 5) {
+                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_EndPointPriority endpoint_priority = 5;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
+            if (constraintCase_ == 5) {
+                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+        }
+
+        public static final int SLA_CAPACITY_FIELD_NUMBER = 6;
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         * @return Whether the slaCapacity field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaCapacity() {
+            return constraintCase_ == 6;
+        }
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         * @return The slaCapacity.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
+            if (constraintCase_ == 6) {
+                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_SLA_Capacity sla_capacity = 6;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
+            if (constraintCase_ == 6) {
+                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+        }
+
+        public static final int SLA_LATENCY_FIELD_NUMBER = 7;
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         * @return Whether the slaLatency field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaLatency() {
+            return constraintCase_ == 7;
+        }
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         * @return The slaLatency.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
+            if (constraintCase_ == 7) {
+                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_SLA_Latency sla_latency = 7;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
+            if (constraintCase_ == 7) {
+                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+        }
+
+        public static final int SLA_AVAILABILITY_FIELD_NUMBER = 8;
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         * @return Whether the slaAvailability field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaAvailability() {
+            return constraintCase_ == 8;
+        }
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         * @return The slaAvailability.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
+            if (constraintCase_ == 8) {
+                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_SLA_Availability sla_availability = 8;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
+            if (constraintCase_ == 8) {
+                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        }
+
+        public static final int SLA_ISOLATION_FIELD_NUMBER = 9;
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         * @return Whether the slaIsolation field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaIsolation() {
+            return constraintCase_ == 9;
+        }
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         * @return The slaIsolation.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
+            if (constraintCase_ == 9) {
+                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
+            if (constraintCase_ == 9) {
+                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        }
+
+        public static final int EXCLUSIONS_FIELD_NUMBER = 10;
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         * @return Whether the exclusions field is set.
+         */
+        @java.lang.Override
+        public boolean hasExclusions() {
+            return constraintCase_ == 10;
+        }
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         * @return The exclusions.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
+            if (constraintCase_ == 10) {
+                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_Exclusions exclusions = 10;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
+            if (constraintCase_ == 10) {
+                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+        }
+
+        public static final int QOS_PROFILE_FIELD_NUMBER = 11;
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         * @return Whether the qosProfile field is set.
+         */
+        @java.lang.Override
+        public boolean hasQosProfile() {
+            return constraintCase_ == 11;
+        }
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         * @return The qosProfile.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() {
+            if (constraintCase_ == 11) {
+                return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
+        }
+
+        /**
+         * .context.Constraint_QoSProfile qos_profile = 11;
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() {
+            if (constraintCase_ == 11) {
+                return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
+                output.writeEnum(1, action_);
+            }
+            if (constraintCase_ == 2) {
+                output.writeMessage(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
+            }
+            if (constraintCase_ == 3) {
+                output.writeMessage(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
+            }
+            if (constraintCase_ == 4) {
+                output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+            }
+            if (constraintCase_ == 5) {
+                output.writeMessage(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+            }
+            if (constraintCase_ == 6) {
+                output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+            }
+            if (constraintCase_ == 7) {
+                output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+            }
+            if (constraintCase_ == 8) {
+                output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+            }
+            if (constraintCase_ == 9) {
+                output.writeMessage(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            }
+            if (constraintCase_ == 10) {
+                output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            }
+            if (constraintCase_ == 11) {
+                output.writeMessage(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
+            }
+            if (constraintCase_ == 2) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
+            }
+            if (constraintCase_ == 3) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
+            }
+            if (constraintCase_ == 4) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+            }
+            if (constraintCase_ == 5) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+            }
+            if (constraintCase_ == 6) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+            }
+            if (constraintCase_ == 7) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+            }
+            if (constraintCase_ == 8) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+            }
+            if (constraintCase_ == 9) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            }
+            if (constraintCase_ == 10) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            }
+            if (constraintCase_ == 11) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;
+            if (action_ != other.action_)
+                return false;
+            if (!getConstraintCase().equals(other.getConstraintCase()))
+                return false;
+            switch(constraintCase_) {
+                case 2:
+                    if (!getCustom().equals(other.getCustom()))
+                        return false;
+                    break;
+                case 3:
+                    if (!getSchedule().equals(other.getSchedule()))
+                        return false;
+                    break;
+                case 4:
+                    if (!getEndpointLocation().equals(other.getEndpointLocation()))
+                        return false;
+                    break;
+                case 5:
+                    if (!getEndpointPriority().equals(other.getEndpointPriority()))
+                        return false;
+                    break;
+                case 6:
+                    if (!getSlaCapacity().equals(other.getSlaCapacity()))
+                        return false;
+                    break;
+                case 7:
+                    if (!getSlaLatency().equals(other.getSlaLatency()))
+                        return false;
+                    break;
+                case 8:
+                    if (!getSlaAvailability().equals(other.getSlaAvailability()))
+                        return false;
+                    break;
+                case 9:
+                    if (!getSlaIsolation().equals(other.getSlaIsolation()))
+                        return false;
+                    break;
+                case 10:
+                    if (!getExclusions().equals(other.getExclusions()))
+                        return false;
+                    break;
+                case 11:
+                    if (!getQosProfile().equals(other.getQosProfile()))
+                        return false;
+                    break;
+                case 0:
+                default:
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + ACTION_FIELD_NUMBER;
+            hash = (53 * hash) + action_;
+            switch(constraintCase_) {
+                case 2:
+                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
+                    hash = (53 * hash) + getCustom().hashCode();
+                    break;
+                case 3:
+                    hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
+                    hash = (53 * hash) + getSchedule().hashCode();
+                    break;
+                case 4:
+                    hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
+                    hash = (53 * hash) + getEndpointLocation().hashCode();
+                    break;
+                case 5:
+                    hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getEndpointPriority().hashCode();
+                    break;
+                case 6:
+                    hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaCapacity().hashCode();
+                    break;
+                case 7:
+                    hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaLatency().hashCode();
+                    break;
+                case 8:
+                    hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaAvailability().hashCode();
+                    break;
+                case 9:
+                    hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaIsolation().hashCode();
+                    break;
+                case 10:
+                    hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
+                    hash = (53 * hash) + getExclusions().hashCode();
+                    break;
+                case 11:
+                    hash = (37 * hash) + QOS_PROFILE_FIELD_NUMBER;
+                    hash = (53 * hash) + getQosProfile().hashCode();
+                    break;
+                case 0:
+                default:
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Constraint}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Constraint)
+        context.ContextOuterClass.ConstraintOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Constraint.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (scheduleBuilder_ != null) {
+                    scheduleBuilder_.clear();
+                }
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.clear();
+                }
+                if (endpointPriorityBuilder_ != null) {
+                    endpointPriorityBuilder_.clear();
+                }
+                if (slaCapacityBuilder_ != null) {
+                    slaCapacityBuilder_.clear();
+                }
+                if (slaLatencyBuilder_ != null) {
+                    slaLatencyBuilder_.clear();
+                }
+                if (slaAvailabilityBuilder_ != null) {
+                    slaAvailabilityBuilder_.clear();
+                }
+                if (slaIsolationBuilder_ != null) {
+                    slaIsolationBuilder_.clear();
+                }
+                if (exclusionsBuilder_ != null) {
+                    exclusionsBuilder_.clear();
+                }
+                if (qosProfileBuilder_ != null) {
+                    qosProfileBuilder_.clear();
+                }
+                constraintCase_ = 0;
+                constraint_ = null;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint build() {
+                context.ContextOuterClass.Constraint result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint buildPartial() {
+                context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Constraint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
+            }
+
+            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
+                result.constraintCase_ = constraintCase_;
+                result.constraint_ = this.constraint_;
+                if (constraintCase_ == 2 && customBuilder_ != null) {
+                    result.constraint_ = customBuilder_.build();
+                }
+                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
+                    result.constraint_ = scheduleBuilder_.build();
+                }
+                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
+                    result.constraint_ = endpointLocationBuilder_.build();
+                }
+                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
+                    result.constraint_ = endpointPriorityBuilder_.build();
+                }
+                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
+                    result.constraint_ = slaCapacityBuilder_.build();
+                }
+                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
+                    result.constraint_ = slaLatencyBuilder_.build();
+                }
+                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
+                    result.constraint_ = slaAvailabilityBuilder_.build();
+                }
+                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
+                    result.constraint_ = slaIsolationBuilder_.build();
+                }
+                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
+                    result.constraint_ = exclusionsBuilder_.build();
+                }
+                if (constraintCase_ == 11 && qosProfileBuilder_ != null) {
+                    result.constraint_ = qosProfileBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint) {
+                    return mergeFrom((context.ContextOuterClass.Constraint) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
+                if (other == context.ContextOuterClass.Constraint.getDefaultInstance())
+                    return this;
+                if (other.action_ != 0) {
+                    setActionValue(other.getActionValue());
+                }
+                switch(other.getConstraintCase()) {
+                    case CUSTOM:
+                        {
+                            mergeCustom(other.getCustom());
+                            break;
+                        }
+                    case SCHEDULE:
+                        {
+                            mergeSchedule(other.getSchedule());
+                            break;
+                        }
+                    case ENDPOINT_LOCATION:
+                        {
+                            mergeEndpointLocation(other.getEndpointLocation());
+                            break;
+                        }
+                    case ENDPOINT_PRIORITY:
+                        {
+                            mergeEndpointPriority(other.getEndpointPriority());
+                            break;
+                        }
+                    case SLA_CAPACITY:
+                        {
+                            mergeSlaCapacity(other.getSlaCapacity());
+                            break;
+                        }
+                    case SLA_LATENCY:
+                        {
+                            mergeSlaLatency(other.getSlaLatency());
+                            break;
+                        }
+                    case SLA_AVAILABILITY:
+                        {
+                            mergeSlaAvailability(other.getSlaAvailability());
+                            break;
+                        }
+                    case SLA_ISOLATION:
+                        {
+                            mergeSlaIsolation(other.getSlaIsolation());
+                            break;
+                        }
+                    case EXCLUSIONS:
+                        {
+                            mergeExclusions(other.getExclusions());
+                            break;
+                        }
+                    case QOS_PROFILE:
+                        {
+                            mergeQosProfile(other.getQosProfile());
+                            break;
+                        }
+                    case CONSTRAINT_NOT_SET:
+                        {
+                            break;
+                        }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
+                try {
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 4;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 5;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 6;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 7;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 8;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 9;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 10;
+                                    break;
+                                }
+                            // case 82
+                            case 90:
+                                {
+                                    input.readMessage(getQosProfileFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 11;
+                                    break;
+                                }
+                            // case 90
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int constraintCase_ = 0;
+
+            private java.lang.Object constraint_;
+
+            public ConstraintCase getConstraintCase() {
+                return ConstraintCase.forNumber(constraintCase_);
+            }
+
+            public Builder clearConstraint() {
+                constraintCase_ = 0;
+                constraint_ = null;
+                onChanged();
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int action_ = 0;
+
+            /**
+             * .context.ConstraintActionEnum action = 1;
+             * @return The enum numeric value on the wire for action.
+             */
+            @java.lang.Override
+            public int getActionValue() {
+                return action_;
+            }
+
+            /**
+             * .context.ConstraintActionEnum action = 1;
+             * @param value The enum numeric value on the wire for action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setActionValue(int value) {
+                action_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * .context.ConstraintActionEnum action = 1;
+             * @return The action.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConstraintActionEnum getAction() {
+                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+                return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * .context.ConstraintActionEnum action = 1;
+             * @param value The action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAction(context.ContextOuterClass.ConstraintActionEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                action_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * .context.ConstraintActionEnum action = 1;
+             * @return This builder for chaining.
+             */
+            public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                action_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 customBuilder_;
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             * @return Whether the custom field is set.
+             */
+            @java.lang.Override
+            public boolean hasCustom() {
+                return constraintCase_ == 2;
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             * @return The custom.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Custom getCustom() {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2) {
+                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 2) {
+                        return customBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
+                if (customBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(value);
+                }
+                constraintCase_ = 2;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            public Builder setCustom(context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
+                if (customBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 2;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2 && constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 2) {
+                        customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 2;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            public Builder clearCustom() {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 2) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    customBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
+                return getCustomFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
+                if ((constraintCase_ == 2) && (customBuilder_ != null)) {
+                    return customBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 2) {
+                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_Custom custom = 2;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getCustomFieldBuilder() {
+                if (customBuilder_ == null) {
+                    if (!(constraintCase_ == 2)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                    }
+                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Custom) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 2;
+                onChanged();
+                return customBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 scheduleBuilder_;
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             * @return Whether the schedule field is set.
+             */
+            @java.lang.Override
+            public boolean hasSchedule() {
+                return constraintCase_ == 3;
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             * @return The schedule.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Schedule getSchedule() {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3) {
+                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 3) {
+                        return scheduleBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
+                if (scheduleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    scheduleBuilder_.setMessage(value);
+                }
+                constraintCase_ = 3;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
+                if (scheduleBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    scheduleBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 3;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3 && constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 3) {
+                        scheduleBuilder_.mergeFrom(value);
+                    } else {
+                        scheduleBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 3;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            public Builder clearSchedule() {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 3) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    scheduleBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
+                return getScheduleFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
+                if ((constraintCase_ == 3) && (scheduleBuilder_ != null)) {
+                    return scheduleBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 3) {
+                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_Schedule schedule = 3;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getScheduleFieldBuilder() {
+                if (scheduleBuilder_ == null) {
+                    if (!(constraintCase_ == 3)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                    }
+                    scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Schedule) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 3;
+                onChanged();
+                return scheduleBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 endpointLocationBuilder_;
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * @return Whether the endpointLocation field is set.
+             */
+            @java.lang.Override
+            public boolean hasEndpointLocation() {
+                return constraintCase_ == 4;
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * @return The endpointLocation.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4) {
+                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 4) {
+                        return endpointLocationBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    endpointLocationBuilder_.setMessage(value);
+                }
+                constraintCase_ = 4;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
+                if (endpointLocationBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    endpointLocationBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 4;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4 && constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 4) {
+                        endpointLocationBuilder_.mergeFrom(value);
+                    } else {
+                        endpointLocationBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 4;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            public Builder clearEndpointLocation() {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 4) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    endpointLocationBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
+                return getEndpointLocationFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
+                if ((constraintCase_ == 4) && (endpointLocationBuilder_ != null)) {
+                    return endpointLocationBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 4) {
+                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getEndpointLocationFieldBuilder() {
+                if (endpointLocationBuilder_ == null) {
+                    if (!(constraintCase_ == 4)) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                    }
+                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_EndPointLocation) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 4;
+                onChanged();
+                return endpointLocationBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 endpointPriorityBuilder_;
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * @return Whether the endpointPriority field is set.
+             */
+            @java.lang.Override
+            public boolean hasEndpointPriority() {
+                return constraintCase_ == 5;
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * @return The endpointPriority.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5) {
+                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 5) {
+                        return endpointPriorityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
+                if (endpointPriorityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    endpointPriorityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 5;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
+                if (endpointPriorityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    endpointPriorityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 5;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5 && constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 5) {
+                        endpointPriorityBuilder_.mergeFrom(value);
+                    } else {
+                        endpointPriorityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 5;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            public Builder clearEndpointPriority() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 5) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    endpointPriorityBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
+                return getEndpointPriorityFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
+                if ((constraintCase_ == 5) && (endpointPriorityBuilder_ != null)) {
+                    return endpointPriorityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 5) {
+                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getEndpointPriorityFieldBuilder() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (!(constraintCase_ == 5)) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                    }
+                    endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_EndPointPriority) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 5;
+                onChanged();
+                return endpointPriorityBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 slaCapacityBuilder_;
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * @return Whether the slaCapacity field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaCapacity() {
+                return constraintCase_ == 6;
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * @return The slaCapacity.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6) {
+                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 6) {
+                        return slaCapacityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
+                if (slaCapacityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaCapacityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 6;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
+                if (slaCapacityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaCapacityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 6;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6 && constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 6) {
+                        slaCapacityBuilder_.mergeFrom(value);
+                    } else {
+                        slaCapacityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 6;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            public Builder clearSlaCapacity() {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 6) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaCapacityBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
+                return getSlaCapacityFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
              */
             @java.lang.Override
-            public boolean hasEndpointLocation() {
-                return constraintCase_ == 4;
+            public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
+                if ((constraintCase_ == 6) && (slaCapacityBuilder_ != null)) {
+                    return slaCapacityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 6) {
+                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                }
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
-             * @return The endpointLocation.
+             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getSlaCapacityFieldBuilder() {
+                if (slaCapacityBuilder_ == null) {
+                    if (!(constraintCase_ == 6)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                    }
+                    slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 6;
+                onChanged();
+                return slaCapacityBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 slaLatencyBuilder_;
+
+            /**
+             * .context.Constraint_SLA_Latency sla_latency = 7;
+             * @return Whether the slaLatency field is set.
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
-                if (endpointLocationBuilder_ == null) {
-                    if (constraintCase_ == 4) {
-                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            public boolean hasSlaLatency() {
+                return constraintCase_ == 7;
+            }
+
+            /**
+             * .context.Constraint_SLA_Latency sla_latency = 7;
+             * @return The slaLatency.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7) {
+                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                 } else {
-                    if (constraintCase_ == 4) {
-                        return endpointLocationBuilder_.getMessage();
+                    if (constraintCase_ == 7) {
+                        return slaLatencyBuilder_.getMessage();
                     }
-                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                 }
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
-                if (endpointLocationBuilder_ == null) {
+            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
+                if (slaLatencyBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
                     constraint_ = value;
                     onChanged();
                 } else {
-                    endpointLocationBuilder_.setMessage(value);
+                    slaLatencyBuilder_.setMessage(value);
                 }
-                constraintCase_ = 4;
+                constraintCase_ = 7;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
-                if (endpointLocationBuilder_ == null) {
+            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) {
+                if (slaLatencyBuilder_ == null) {
                     constraint_ = builderForValue.build();
                     onChanged();
                 } else {
-                    endpointLocationBuilder_.setMessage(builderForValue.build());
+                    slaLatencyBuilder_.setMessage(builderForValue.build());
                 }
-                constraintCase_ = 4;
+                constraintCase_ = 7;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
-                if (endpointLocationBuilder_ == null) {
-                    if (constraintCase_ == 4 && constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
-                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).mergeFrom(value).buildPartial();
+            public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7 && constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).mergeFrom(value).buildPartial();
                     } else {
                         constraint_ = value;
                     }
                     onChanged();
                 } else {
-                    if (constraintCase_ == 4) {
-                        endpointLocationBuilder_.mergeFrom(value);
+                    if (constraintCase_ == 7) {
+                        slaLatencyBuilder_.mergeFrom(value);
+                    } else {
+                        slaLatencyBuilder_.setMessage(value);
                     }
-                    endpointLocationBuilder_.setMessage(value);
                 }
-                constraintCase_ = 4;
+                constraintCase_ = 7;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            public Builder clearEndpointLocation() {
-                if (endpointLocationBuilder_ == null) {
-                    if (constraintCase_ == 4) {
+            public Builder clearSlaLatency() {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7) {
                         constraintCase_ = 0;
                         constraint_ = null;
                         onChanged();
                     }
                 } else {
-                    if (constraintCase_ == 4) {
+                    if (constraintCase_ == 7) {
                         constraintCase_ = 0;
                         constraint_ = null;
                     }
-                    endpointLocationBuilder_.clear();
+                    slaLatencyBuilder_.clear();
                 }
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
-                return getEndpointLocationFieldBuilder().getBuilder();
+            public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() {
+                return getSlaLatencyFieldBuilder().getBuilder();
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
-                if ((constraintCase_ == 4) && (endpointLocationBuilder_ != null)) {
-                    return endpointLocationBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
+                if ((constraintCase_ == 7) && (slaLatencyBuilder_ != null)) {
+                    return slaLatencyBuilder_.getMessageOrBuilder();
                 } else {
-                    if (constraintCase_ == 4) {
-                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+                    if (constraintCase_ == 7) {
+                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                 }
             }
 
             /**
-             * .context.Constraint_EndPointLocation endpoint_location = 4;
+             * .context.Constraint_SLA_Latency sla_latency = 7;
              */
-            private com.google.protobuf.SingleFieldBuilderV3 getEndpointLocationFieldBuilder() {
-                if (endpointLocationBuilder_ == null) {
-                    if (!(constraintCase_ == 4)) {
-                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilderV3 getSlaLatencyFieldBuilder() {
+                if (slaLatencyBuilder_ == null) {
+                    if (!(constraintCase_ == 7)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                     }
-                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_EndPointLocation) constraint_, getParentForChildren(), isClean());
+                    slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Latency) constraint_, getParentForChildren(), isClean());
                     constraint_ = null;
                 }
-                constraintCase_ = 4;
+                constraintCase_ = 7;
                 onChanged();
-                ;
-                return endpointLocationBuilder_;
+                return slaLatencyBuilder_;
             }
 
-            private com.google.protobuf.SingleFieldBuilderV3 endpointPriorityBuilder_;
+            private com.google.protobuf.SingleFieldBuilderV3 slaAvailabilityBuilder_;
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             * @return Whether the slaAvailability field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaAvailability() {
+                return constraintCase_ == 8;
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             * @return The slaAvailability.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8) {
+                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 8) {
+                        return slaAvailabilityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaAvailabilityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 8;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) {
+                if (slaAvailabilityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaAvailabilityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 8;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8 && constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 8) {
+                        slaAvailabilityBuilder_.mergeFrom(value);
+                    } else {
+                        slaAvailabilityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 8;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            public Builder clearSlaAvailability() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 8) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaAvailabilityBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() {
+                return getSlaAvailabilityFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
+                if ((constraintCase_ == 8) && (slaAvailabilityBuilder_ != null)) {
+                    return slaAvailabilityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 8) {
+                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_SLA_Availability sla_availability = 8;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getSlaAvailabilityFieldBuilder() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (!(constraintCase_ == 8)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                    }
+                    slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Availability) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 8;
+                onChanged();
+                return slaAvailabilityBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 slaIsolationBuilder_;
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             * @return Whether the slaIsolation field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaIsolation() {
+                return constraintCase_ == 9;
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             * @return The slaIsolation.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9) {
+                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 9) {
+                        return slaIsolationBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
+                if (slaIsolationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaIsolationBuilder_.setMessage(value);
+                }
+                constraintCase_ = 9;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) {
+                if (slaIsolationBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaIsolationBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 9;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9 && constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 9) {
+                        slaIsolationBuilder_.mergeFrom(value);
+                    } else {
+                        slaIsolationBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 9;
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            public Builder clearSlaIsolation() {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 9) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaIsolationBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() {
+                return getSlaIsolationFieldBuilder().getBuilder();
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
+                if ((constraintCase_ == 9) && (slaIsolationBuilder_ != null)) {
+                    return slaIsolationBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 9) {
+                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_SLA_Isolation_level sla_isolation = 9;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getSlaIsolationFieldBuilder() {
+                if (slaIsolationBuilder_ == null) {
+                    if (!(constraintCase_ == 9)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                    }
+                    slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 9;
+                onChanged();
+                return slaIsolationBuilder_;
+            }
+
+            private com.google.protobuf.SingleFieldBuilderV3 exclusionsBuilder_;
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
-             * @return Whether the endpointPriority field is set.
+             * .context.Constraint_Exclusions exclusions = 10;
+             * @return Whether the exclusions field is set.
              */
             @java.lang.Override
-            public boolean hasEndpointPriority() {
-                return constraintCase_ == 5;
+            public boolean hasExclusions() {
+                return constraintCase_ == 10;
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
-             * @return The endpointPriority.
+             * .context.Constraint_Exclusions exclusions = 10;
+             * @return The exclusions.
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
-                if (endpointPriorityBuilder_ == null) {
-                    if (constraintCase_ == 5) {
-                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+            public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10) {
+                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                 } else {
-                    if (constraintCase_ == 5) {
-                        return endpointPriorityBuilder_.getMessage();
+                    if (constraintCase_ == 10) {
+                        return exclusionsBuilder_.getMessage();
                     }
-                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                 }
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
-                if (endpointPriorityBuilder_ == null) {
+            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
+                if (exclusionsBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
                     constraint_ = value;
                     onChanged();
                 } else {
-                    endpointPriorityBuilder_.setMessage(value);
+                    exclusionsBuilder_.setMessage(value);
                 }
-                constraintCase_ = 5;
+                constraintCase_ = 10;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
-                if (endpointPriorityBuilder_ == null) {
+            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) {
+                if (exclusionsBuilder_ == null) {
                     constraint_ = builderForValue.build();
                     onChanged();
                 } else {
-                    endpointPriorityBuilder_.setMessage(builderForValue.build());
+                    exclusionsBuilder_.setMessage(builderForValue.build());
                 }
-                constraintCase_ = 5;
+                constraintCase_ = 10;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
-                if (endpointPriorityBuilder_ == null) {
-                    if (constraintCase_ == 5 && constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
-                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).mergeFrom(value).buildPartial();
+            public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10 && constraint_ != context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.newBuilder((context.ContextOuterClass.Constraint_Exclusions) constraint_).mergeFrom(value).buildPartial();
                     } else {
                         constraint_ = value;
                     }
                     onChanged();
                 } else {
-                    if (constraintCase_ == 5) {
-                        endpointPriorityBuilder_.mergeFrom(value);
+                    if (constraintCase_ == 10) {
+                        exclusionsBuilder_.mergeFrom(value);
+                    } else {
+                        exclusionsBuilder_.setMessage(value);
                     }
-                    endpointPriorityBuilder_.setMessage(value);
                 }
-                constraintCase_ = 5;
+                constraintCase_ = 10;
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            public Builder clearEndpointPriority() {
-                if (endpointPriorityBuilder_ == null) {
-                    if (constraintCase_ == 5) {
+            public Builder clearExclusions() {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10) {
                         constraintCase_ = 0;
                         constraint_ = null;
                         onChanged();
                     }
                 } else {
-                    if (constraintCase_ == 5) {
+                    if (constraintCase_ == 10) {
                         constraintCase_ = 0;
                         constraint_ = null;
                     }
-                    endpointPriorityBuilder_.clear();
+                    exclusionsBuilder_.clear();
                 }
                 return this;
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
-                return getEndpointPriorityFieldBuilder().getBuilder();
+            public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() {
+                return getExclusionsFieldBuilder().getBuilder();
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
-                if ((constraintCase_ == 5) && (endpointPriorityBuilder_ != null)) {
-                    return endpointPriorityBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
+                if ((constraintCase_ == 10) && (exclusionsBuilder_ != null)) {
+                    return exclusionsBuilder_.getMessageOrBuilder();
                 } else {
-                    if (constraintCase_ == 5) {
-                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+                    if (constraintCase_ == 10) {
+                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                 }
             }
 
             /**
-             * .context.Constraint_EndPointPriority endpoint_priority = 5;
+             * .context.Constraint_Exclusions exclusions = 10;
              */
-            private com.google.protobuf.SingleFieldBuilderV3 getEndpointPriorityFieldBuilder() {
-                if (endpointPriorityBuilder_ == null) {
-                    if (!(constraintCase_ == 5)) {
-                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilderV3 getExclusionsFieldBuilder() {
+                if (exclusionsBuilder_ == null) {
+                    if (!(constraintCase_ == 10)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                     }
-                    endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_EndPointPriority) constraint_, getParentForChildren(), isClean());
+                    exclusionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Exclusions) constraint_, getParentForChildren(), isClean());
                     constraint_ = null;
                 }
-                constraintCase_ = 5;
+                constraintCase_ = 10;
                 onChanged();
-                ;
-                return endpointPriorityBuilder_;
+                return exclusionsBuilder_;
             }
 
-            private com.google.protobuf.SingleFieldBuilderV3 slaCapacityBuilder_;
+            private com.google.protobuf.SingleFieldBuilderV3 qosProfileBuilder_;
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
-             * @return Whether the slaCapacity field is set.
+             * .context.Constraint_QoSProfile qos_profile = 11;
+             * @return Whether the qosProfile field is set.
              */
             @java.lang.Override
-            public boolean hasSlaCapacity() {
-                return constraintCase_ == 6;
+            public boolean hasQosProfile() {
+                return constraintCase_ == 11;
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
-             * @return The slaCapacity.
+             * .context.Constraint_QoSProfile qos_profile = 11;
+             * @return The qosProfile.
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
-                if (slaCapacityBuilder_ == null) {
-                    if (constraintCase_ == 6) {
-                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+            public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() {
+                if (qosProfileBuilder_ == null) {
+                    if (constraintCase_ == 11) {
+                        return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                 } else {
-                    if (constraintCase_ == 6) {
-                        return slaCapacityBuilder_.getMessage();
+                    if (constraintCase_ == 11) {
+                        return qosProfileBuilder_.getMessage();
                     }
-                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                 }
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
-            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
-                if (slaCapacityBuilder_ == null) {
+            public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) {
+                if (qosProfileBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
                     constraint_ = value;
                     onChanged();
                 } else {
-                    slaCapacityBuilder_.setMessage(value);
+                    qosProfileBuilder_.setMessage(value);
                 }
-                constraintCase_ = 6;
+                constraintCase_ = 11;
                 return this;
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
-            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
-                if (slaCapacityBuilder_ == null) {
+            public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile.Builder builderForValue) {
+                if (qosProfileBuilder_ == null) {
                     constraint_ = builderForValue.build();
                     onChanged();
                 } else {
-                    slaCapacityBuilder_.setMessage(builderForValue.build());
+                    qosProfileBuilder_.setMessage(builderForValue.build());
                 }
-                constraintCase_ = 6;
+                constraintCase_ = 11;
                 return this;
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
-            public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
-                if (slaCapacityBuilder_ == null) {
-                    if (constraintCase_ == 6 && constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
-                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).mergeFrom(value).buildPartial();
+            public Builder mergeQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) {
+                if (qosProfileBuilder_ == null) {
+                    if (constraintCase_ == 11 && constraint_ != context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_QoSProfile.newBuilder((context.ContextOuterClass.Constraint_QoSProfile) constraint_).mergeFrom(value).buildPartial();
                     } else {
                         constraint_ = value;
                     }
                     onChanged();
                 } else {
-                    if (constraintCase_ == 6) {
-                        slaCapacityBuilder_.mergeFrom(value);
+                    if (constraintCase_ == 11) {
+                        qosProfileBuilder_.mergeFrom(value);
+                    } else {
+                        qosProfileBuilder_.setMessage(value);
                     }
-                    slaCapacityBuilder_.setMessage(value);
                 }
-                constraintCase_ = 6;
+                constraintCase_ = 11;
                 return this;
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
-            public Builder clearSlaCapacity() {
-                if (slaCapacityBuilder_ == null) {
-                    if (constraintCase_ == 6) {
+            public Builder clearQosProfile() {
+                if (qosProfileBuilder_ == null) {
+                    if (constraintCase_ == 11) {
                         constraintCase_ = 0;
                         constraint_ = null;
                         onChanged();
                     }
                 } else {
-                    if (constraintCase_ == 6) {
+                    if (constraintCase_ == 11) {
                         constraintCase_ = 0;
                         constraint_ = null;
                     }
-                    slaCapacityBuilder_.clear();
+                    qosProfileBuilder_.clear();
                 }
                 return this;
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
-            public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
-                return getSlaCapacityFieldBuilder().getBuilder();
+            public context.ContextOuterClass.Constraint_QoSProfile.Builder getQosProfileBuilder() {
+                return getQosProfileFieldBuilder().getBuilder();
             }
 
             /**
-             * .context.Constraint_SLA_Capacity sla_capacity = 6;
+             * .context.Constraint_QoSProfile qos_profile = 11;
              */
             @java.lang.Override
-            public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
-                if ((constraintCase_ == 6) && (slaCapacityBuilder_ != null)) {
-                    return slaCapacityBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() {
+                if ((constraintCase_ == 11) && (qosProfileBuilder_ != null)) {
+                    return qosProfileBuilder_.getMessageOrBuilder();
                 } else {
-                    if (constraintCase_ == 6) {
-                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+                    if (constraintCase_ == 11) {
+                        return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
                     }
-                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
+                }
+            }
+
+            /**
+             * .context.Constraint_QoSProfile qos_profile = 11;
+             */
+            private com.google.protobuf.SingleFieldBuilderV3 getQosProfileFieldBuilder() {
+                if (qosProfileBuilder_ == null) {
+                    if (!(constraintCase_ == 11)) {
+                        constraint_ = context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
+                    }
+                    qosProfileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_QoSProfile) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 11;
+                onChanged();
+                return qosProfileBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Constraint)
+        private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint();
+        }
+
+        public static context.ContextOuterClass.Constraint getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() {
+
+            @java.lang.Override
+            public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                 }
+                return builder.buildPartial();
+            }
+        };
+
+        public static com.google.protobuf.Parser parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TeraFlowControllerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TeraFlowController)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * .context.ContextId context_id = 1;
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * .context.ContextId context_id = 1;
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * .context.ContextId context_id = 1;
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
+        /**
+         * string ip_address = 2;
+         * @return The ipAddress.
+         */
+        java.lang.String getIpAddress();
+
+        /**
+         * string ip_address = 2;
+         * @return The bytes for ipAddress.
+         */
+        com.google.protobuf.ByteString getIpAddressBytes();
+
+        /**
+         * uint32 port = 3;
+         * @return The port.
+         */
+        int getPort();
+    }
+
+    /**
+     * 
+     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
+     * 
+ * + * Protobuf type {@code context.TeraFlowController} + */ + public static final class TeraFlowController extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TeraFlowController) + TeraFlowControllerOrBuilder { + + private static final long serialVersionUID = 0L; + + // Use TeraFlowController.newBuilder() to construct. + private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private TeraFlowController() { + ipAddress_ = ""; + } + + @java.lang.Override + @SuppressWarnings({ "unused" }) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new TeraFlowController(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class); + } + + public static final int CONTEXT_ID_FIELD_NUMBER = 1; + + private context.ContextOuterClass.ContextId contextId_; + + /** + * .context.ContextId context_id = 1; + * @return Whether the contextId field is set. + */ + @java.lang.Override + public boolean hasContextId() { + return contextId_ != null; + } + + /** + * .context.ContextId context_id = 1; + * @return The contextId. + */ + @java.lang.Override + public context.ContextOuterClass.ContextId getContextId() { + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; + } + + /** + * .context.ContextId context_id = 1; + */ + @java.lang.Override + public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; + } + + public static final int IP_ADDRESS_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object ipAddress_ = ""; + + /** + * string ip_address = 2; + * @return The ipAddress. + */ + @java.lang.Override + public java.lang.String getIpAddress() { + java.lang.Object ref = ipAddress_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ipAddress_ = s; + return s; + } + } + + /** + * string ip_address = 2; + * @return The bytes for ipAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getIpAddressBytes() { + java.lang.Object ref = ipAddress_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + ipAddress_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PORT_FIELD_NUMBER = 3; + + private int port_ = 0; + + /** + * uint32 port = 3; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (contextId_ != null) { + output.writeMessage(1, getContextId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_); + } + if (port_ != 0) { + output.writeUInt32(3, port_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + size = 0; + if (contextId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_); + } + if (port_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) { + return super.equals(obj); + } + context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj; + if (hasContextId() != other.hasContextId()) + return false; + if (hasContextId()) { + if (!getContextId().equals(other.getContextId())) + return false; + } + if (!getIpAddress().equals(other.getIpAddress())) + return false; + if (getPort() != other.getPort()) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) + return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasContextId()) { + hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER; + hash = (53 * hash) + getContextId().hashCode(); } + hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER; + hash = (53 * hash) + getIpAddress().hashCode(); + hash = (37 * hash) + PORT_FIELD_NUMBER; + hash = (53 * hash) + getPort(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } - /** - * .context.Constraint_SLA_Capacity sla_capacity = 6; - */ - private com.google.protobuf.SingleFieldBuilderV3 getSlaCapacityFieldBuilder() { - if (slaCapacityBuilder_ == null) { - if (!(constraintCase_ == 6)) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance(); - } - slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_, getParentForChildren(), isClean()); - constraint_ = null; - } - constraintCase_ = 6; - onChanged(); - ; - return slaCapacityBuilder_; - } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } - private com.google.protobuf.SingleFieldBuilderV3 slaLatencyBuilder_; + public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - * @return Whether the slaLatency field is set. - */ - @java.lang.Override - public boolean hasSlaLatency() { - return constraintCase_ == 7; - } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - * @return The slaLatency. - */ - @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() { - if (slaLatencyBuilder_ == null) { - if (constraintCase_ == 7) { - return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance(); - } else { - if (constraintCase_ == 7) { - return slaLatencyBuilder_.getMessage(); - } - return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance(); - } - } + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) { - if (slaLatencyBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - constraint_ = value; - onChanged(); - } else { - slaLatencyBuilder_.setMessage(value); - } - constraintCase_ = 7; - return this; - } + /** + *
+         * ----- Miscellaneous -------------------------------------------------------------------------------------------------
+         * 
+ * + * Protobuf type {@code context.TeraFlowController} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.TeraFlowController) + context.ContextOuterClass.TeraFlowControllerOrBuilder { - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) { - if (slaLatencyBuilder_ == null) { - constraint_ = builderForValue.build(); - onChanged(); - } else { - slaLatencyBuilder_.setMessage(builderForValue.build()); - } - constraintCase_ = 7; - return this; + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) { - if (slaLatencyBuilder_ == null) { - if (constraintCase_ == 7 && constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).mergeFrom(value).buildPartial(); - } else { - constraint_ = value; - } - onChanged(); - } else { - if (constraintCase_ == 7) { - slaLatencyBuilder_.mergeFrom(value); - } - slaLatencyBuilder_.setMessage(value); - } - constraintCase_ = 7; - return this; + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class); } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - public Builder clearSlaLatency() { - if (slaLatencyBuilder_ == null) { - if (constraintCase_ == 7) { - constraintCase_ = 0; - constraint_ = null; - onChanged(); - } - } else { - if (constraintCase_ == 7) { - constraintCase_ = 0; - constraint_ = null; - } - slaLatencyBuilder_.clear(); - } - return this; + // Construct using context.ContextOuterClass.TeraFlowController.newBuilder() + private Builder() { } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() { - return getSlaLatencyFieldBuilder().getBuilder(); + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() { - if ((constraintCase_ == 7) && (slaLatencyBuilder_ != null)) { - return slaLatencyBuilder_.getMessageOrBuilder(); - } else { - if (constraintCase_ == 7) { - return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance(); + public Builder clear() { + super.clear(); + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); + contextIdBuilder_ = null; } + ipAddress_ = ""; + port_ = 0; + return this; } - /** - * .context.Constraint_SLA_Latency sla_latency = 7; - */ - private com.google.protobuf.SingleFieldBuilderV3 getSlaLatencyFieldBuilder() { - if (slaLatencyBuilder_ == null) { - if (!(constraintCase_ == 7)) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance(); - } - slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Latency) constraint_, getParentForChildren(), isClean()); - constraint_ = null; - } - constraintCase_ = 7; - onChanged(); - ; - return slaLatencyBuilder_; + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; } - private com.google.protobuf.SingleFieldBuilderV3 slaAvailabilityBuilder_; - - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - * @return Whether the slaAvailability field is set. - */ @java.lang.Override - public boolean hasSlaAvailability() { - return constraintCase_ == 8; + public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() { + return context.ContextOuterClass.TeraFlowController.getDefaultInstance(); } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - * @return The slaAvailability. - */ @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() { - if (slaAvailabilityBuilder_ == null) { - if (constraintCase_ == 8) { - return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance(); - } else { - if (constraintCase_ == 8) { - return slaAvailabilityBuilder_.getMessage(); - } - return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance(); + public context.ContextOuterClass.TeraFlowController build() { + context.ContextOuterClass.TeraFlowController result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); } + return result; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) { - if (slaAvailabilityBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - constraint_ = value; - onChanged(); - } else { - slaAvailabilityBuilder_.setMessage(value); + @java.lang.Override + public context.ContextOuterClass.TeraFlowController buildPartial() { + context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this); + if (bitField0_ != 0) { + buildPartial0(result); } - constraintCase_ = 8; - return this; + onBuilt(); + return result; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) { - if (slaAvailabilityBuilder_ == null) { - constraint_ = builderForValue.build(); - onChanged(); - } else { - slaAvailabilityBuilder_.setMessage(builderForValue.build()); + private void buildPartial0(context.ContextOuterClass.TeraFlowController result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.ipAddress_ = ipAddress_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.port_ = port_; } - constraintCase_ = 8; - return this; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) { - if (slaAvailabilityBuilder_ == null) { - if (constraintCase_ == 8 && constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).mergeFrom(value).buildPartial(); - } else { - constraint_ = value; - } - onChanged(); + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof context.ContextOuterClass.TeraFlowController) { + return mergeFrom((context.ContextOuterClass.TeraFlowController) other); } else { - if (constraintCase_ == 8) { - slaAvailabilityBuilder_.mergeFrom(value); - } - slaAvailabilityBuilder_.setMessage(value); + super.mergeFrom(other); + return this; } - constraintCase_ = 8; - return this; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - public Builder clearSlaAvailability() { - if (slaAvailabilityBuilder_ == null) { - if (constraintCase_ == 8) { - constraintCase_ = 0; - constraint_ = null; - onChanged(); - } - } else { - if (constraintCase_ == 8) { - constraintCase_ = 0; - constraint_ = null; - } - slaAvailabilityBuilder_.clear(); + public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) { + if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance()) + return this; + if (other.hasContextId()) { + mergeContextId(other.getContextId()); + } + if (!other.getIpAddress().isEmpty()) { + ipAddress_ = other.ipAddress_; + bitField0_ |= 0x00000002; + onChanged(); } + if (other.getPort() != 0) { + setPort(other.getPort()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); return this; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() { - return getSlaAvailabilityFieldBuilder().getBuilder(); + @java.lang.Override + public final boolean isInitialized() { + return true; } - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() { - if ((constraintCase_ == 8) && (slaAvailabilityBuilder_ != null)) { - return slaAvailabilityBuilder_.getMessageOrBuilder(); - } else { - if (constraintCase_ == 8) { - return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance(); + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); } - } - - /** - * .context.Constraint_SLA_Availability sla_availability = 8; - */ - private com.google.protobuf.SingleFieldBuilderV3 getSlaAvailabilityFieldBuilder() { - if (slaAvailabilityBuilder_ == null) { - if (!(constraintCase_ == 8)) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + ipAddress_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 24: + { + port_ = input.readUInt32(); + bitField0_ |= 0x00000004; + break; + } + // case 24 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) } - slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Availability) constraint_, getParentForChildren(), isClean()); - constraint_ = null; + // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); } - constraintCase_ = 8; - onChanged(); - ; - return slaAvailabilityBuilder_; + // finally + return this; } - private com.google.protobuf.SingleFieldBuilderV3 slaIsolationBuilder_; + private int bitField0_; + + private context.ContextOuterClass.ContextId contextId_; + + private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_; /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; - * @return Whether the slaIsolation field is set. + * .context.ContextId context_id = 1; + * @return Whether the contextId field is set. */ - @java.lang.Override - public boolean hasSlaIsolation() { - return constraintCase_ == 9; + public boolean hasContextId() { + return ((bitField0_ & 0x00000001) != 0); } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; - * @return The slaIsolation. + * .context.ContextId context_id = 1; + * @return The contextId. */ - @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() { - if (slaIsolationBuilder_ == null) { - if (constraintCase_ == 9) { - return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance(); + public context.ContextOuterClass.ContextId getContextId() { + if (contextIdBuilder_ == null) { + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } else { - if (constraintCase_ == 9) { - return slaIsolationBuilder_.getMessage(); - } - return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance(); + return contextIdBuilder_.getMessage(); } } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) { - if (slaIsolationBuilder_ == null) { + public Builder setContextId(context.ContextOuterClass.ContextId value) { + if (contextIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - constraint_ = value; - onChanged(); + contextId_ = value; } else { - slaIsolationBuilder_.setMessage(value); + contextIdBuilder_.setMessage(value); } - constraintCase_ = 9; + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) { - if (slaIsolationBuilder_ == null) { - constraint_ = builderForValue.build(); - onChanged(); + public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { + if (contextIdBuilder_ == null) { + contextId_ = builderForValue.build(); } else { - slaIsolationBuilder_.setMessage(builderForValue.build()); + contextIdBuilder_.setMessage(builderForValue.build()); } - constraintCase_ = 9; + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) { - if (slaIsolationBuilder_ == null) { - if (constraintCase_ == 9 && constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).mergeFrom(value).buildPartial(); + public Builder mergeContextId(context.ContextOuterClass.ContextId value) { + if (contextIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { - constraint_ = value; + contextId_ = value; } - onChanged(); } else { - if (constraintCase_ == 9) { - slaIsolationBuilder_.mergeFrom(value); - } - slaIsolationBuilder_.setMessage(value); + contextIdBuilder_.mergeFrom(value); } - constraintCase_ = 9; + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - public Builder clearSlaIsolation() { - if (slaIsolationBuilder_ == null) { - if (constraintCase_ == 9) { - constraintCase_ = 0; - constraint_ = null; - onChanged(); - } - } else { - if (constraintCase_ == 9) { - constraintCase_ = 0; - constraint_ = null; - } - slaIsolationBuilder_.clear(); + public Builder clearContextId() { + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); + contextIdBuilder_ = null; } + onChanged(); return this; } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() { - return getSlaIsolationFieldBuilder().getBuilder(); + public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getContextIdFieldBuilder().getBuilder(); } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - @java.lang.Override - public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() { - if ((constraintCase_ == 9) && (slaIsolationBuilder_ != null)) { - return slaIsolationBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { + if (contextIdBuilder_ != null) { + return contextIdBuilder_.getMessageOrBuilder(); } else { - if (constraintCase_ == 9) { - return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_; - } - return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance(); + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } } /** - * .context.Constraint_SLA_Isolation_level sla_isolation = 9; + * .context.ContextId context_id = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getSlaIsolationFieldBuilder() { - if (slaIsolationBuilder_ == null) { - if (!(constraintCase_ == 9)) { - constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance(); - } - slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_, getParentForChildren(), isClean()); - constraint_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getContextIdFieldBuilder() { + if (contextIdBuilder_ == null) { + contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getContextId(), getParentForChildren(), isClean()); + contextId_ = null; } - constraintCase_ = 9; - onChanged(); - ; - return slaIsolationBuilder_; + return contextIdBuilder_; } - private com.google.protobuf.SingleFieldBuilderV3 exclusionsBuilder_; - - /** - * .context.Constraint_Exclusions exclusions = 10; - * @return Whether the exclusions field is set. - */ - @java.lang.Override - public boolean hasExclusions() { - return constraintCase_ == 10; - } + private java.lang.Object ipAddress_ = ""; /** - * .context.Constraint_Exclusions exclusions = 10; - * @return The exclusions. + * string ip_address = 2; + * @return The ipAddress. */ - @java.lang.Override - public context.ContextOuterClass.Constraint_Exclusions getExclusions() { - if (exclusionsBuilder_ == null) { - if (constraintCase_ == 10) { - return (context.ContextOuterClass.Constraint_Exclusions) constraint_; - } - return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance(); - } else { - if (constraintCase_ == 10) { - return exclusionsBuilder_.getMessage(); - } - return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance(); + public java.lang.String getIpAddress() { + java.lang.Object ref = ipAddress_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ipAddress_ = s; + return s; + } else { + return (java.lang.String) ref; } } /** - * .context.Constraint_Exclusions exclusions = 10; + * string ip_address = 2; + * @return The bytes for ipAddress. */ - public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions value) { - if (exclusionsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - constraint_ = value; - onChanged(); + public com.google.protobuf.ByteString getIpAddressBytes() { + java.lang.Object ref = ipAddress_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + ipAddress_ = b; + return b; } else { - exclusionsBuilder_.setMessage(value); + return (com.google.protobuf.ByteString) ref; } - constraintCase_ = 10; - return this; } /** - * .context.Constraint_Exclusions exclusions = 10; + * string ip_address = 2; + * @param value The ipAddress to set. + * @return This builder for chaining. */ - public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) { - if (exclusionsBuilder_ == null) { - constraint_ = builderForValue.build(); - onChanged(); - } else { - exclusionsBuilder_.setMessage(builderForValue.build()); + public Builder setIpAddress(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); } - constraintCase_ = 10; + ipAddress_ = value; + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * .context.Constraint_Exclusions exclusions = 10; + * string ip_address = 2; + * @return This builder for chaining. */ - public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) { - if (exclusionsBuilder_ == null) { - if (constraintCase_ == 10 && constraint_ != context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) { - constraint_ = context.ContextOuterClass.Constraint_Exclusions.newBuilder((context.ContextOuterClass.Constraint_Exclusions) constraint_).mergeFrom(value).buildPartial(); - } else { - constraint_ = value; - } - onChanged(); - } else { - if (constraintCase_ == 10) { - exclusionsBuilder_.mergeFrom(value); - } - exclusionsBuilder_.setMessage(value); - } - constraintCase_ = 10; + public Builder clearIpAddress() { + ipAddress_ = getDefaultInstance().getIpAddress(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); return this; } /** - * .context.Constraint_Exclusions exclusions = 10; + * string ip_address = 2; + * @param value The bytes for ipAddress to set. + * @return This builder for chaining. */ - public Builder clearExclusions() { - if (exclusionsBuilder_ == null) { - if (constraintCase_ == 10) { - constraintCase_ = 0; - constraint_ = null; - onChanged(); - } - } else { - if (constraintCase_ == 10) { - constraintCase_ = 0; - constraint_ = null; - } - exclusionsBuilder_.clear(); + public Builder setIpAddressBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); } + checkByteStringIsUtf8(value); + ipAddress_ = value; + bitField0_ |= 0x00000002; + onChanged(); return this; } + private int port_; + /** - * .context.Constraint_Exclusions exclusions = 10; + * uint32 port = 3; + * @return The port. */ - public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() { - return getExclusionsFieldBuilder().getBuilder(); + @java.lang.Override + public int getPort() { + return port_; } /** - * .context.Constraint_Exclusions exclusions = 10; + * uint32 port = 3; + * @param value The port to set. + * @return This builder for chaining. */ - @java.lang.Override - public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() { - if ((constraintCase_ == 10) && (exclusionsBuilder_ != null)) { - return exclusionsBuilder_.getMessageOrBuilder(); - } else { - if (constraintCase_ == 10) { - return (context.ContextOuterClass.Constraint_Exclusions) constraint_; - } - return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance(); - } + public Builder setPort(int value) { + port_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; } /** - * .context.Constraint_Exclusions exclusions = 10; + * uint32 port = 3; + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3 getExclusionsFieldBuilder() { - if (exclusionsBuilder_ == null) { - if (!(constraintCase_ == 10)) { - constraint_ = context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance(); - } - exclusionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3((context.ContextOuterClass.Constraint_Exclusions) constraint_, getParentForChildren(), isClean()); - constraint_ = null; - } - constraintCase_ = 10; + public Builder clearPort() { + bitField0_ = (bitField0_ & ~0x00000004); + port_ = 0; onChanged(); - ; - return exclusionsBuilder_; + return this; } @java.lang.Override @@ -70638,44 +71523,54 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.Constraint) + // @@protoc_insertion_point(builder_scope:context.TeraFlowController) } - // @@protoc_insertion_point(class_scope:context.Constraint) - private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.TeraFlowController) + private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint(); + DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController(); } - public static context.ContextOuterClass.Constraint getDefaultInstance() { + public static context.ContextOuterClass.TeraFlowController getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Constraint(input, extensionRegistry); + public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.Constraint getDefaultInstanceForType() { + public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface TeraFlowControllerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TeraFlowController) + public interface AuthenticationResultOrBuilder extends // @@protoc_insertion_point(interface_extends:context.AuthenticationResult) com.google.protobuf.MessageOrBuilder { /** @@ -70696,120 +71591,41 @@ public final class ContextOuterClass { context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder(); /** - * string ip_address = 2; - * @return The ipAddress. - */ - java.lang.String getIpAddress(); - - /** - * string ip_address = 2; - * @return The bytes for ipAddress. - */ - com.google.protobuf.ByteString getIpAddressBytes(); - - /** - * uint32 port = 3; - * @return The port. + * bool authenticated = 2; + * @return The authenticated. */ - int getPort(); + boolean getAuthenticated(); } /** - *
-     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
-     * 
- * - * Protobuf type {@code context.TeraFlowController} + * Protobuf type {@code context.AuthenticationResult} */ - public static final class TeraFlowController extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TeraFlowController) - TeraFlowControllerOrBuilder { + public static final class AuthenticationResult extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.AuthenticationResult) + AuthenticationResultOrBuilder { private static final long serialVersionUID = 0L; - // Use TeraFlowController.newBuilder() to construct. - private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use AuthenticationResult.newBuilder() to construct. + private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private TeraFlowController() { - ipAddress_ = ""; + private AuthenticationResult() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new TeraFlowController(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private TeraFlowController(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - ipAddress_ = s; - break; - } - case 24: - { - port_ = input.readUInt32(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new AuthenticationResult(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; + return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class); + return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class); } public static final int CONTEXT_ID_FIELD_NUMBER = 1; @@ -70839,57 +71655,20 @@ public final class ContextOuterClass { */ @java.lang.Override public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); - } - - public static final int IP_ADDRESS_FIELD_NUMBER = 2; - - private volatile java.lang.Object ipAddress_; - - /** - * string ip_address = 2; - * @return The ipAddress. - */ - @java.lang.Override - public java.lang.String getIpAddress() { - java.lang.Object ref = ipAddress_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - ipAddress_ = s; - return s; - } - } - - /** - * string ip_address = 2; - * @return The bytes for ipAddress. - */ - @java.lang.Override - public com.google.protobuf.ByteString getIpAddressBytes() { - java.lang.Object ref = ipAddress_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - ipAddress_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; } - public static final int PORT_FIELD_NUMBER = 3; + public static final int AUTHENTICATED_FIELD_NUMBER = 2; - private int port_; + private boolean authenticated_ = false; /** - * uint32 port = 3; - * @return The port. + * bool authenticated = 2; + * @return The authenticated. */ @java.lang.Override - public int getPort() { - return port_; + public boolean getAuthenticated() { + return authenticated_; } private byte memoizedIsInitialized = -1; @@ -70910,13 +71689,10 @@ public final class ContextOuterClass { if (contextId_ != null) { output.writeMessage(1, getContextId()); } - if (!getIpAddressBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_); - } - if (port_ != 0) { - output.writeUInt32(3, port_); + if (authenticated_ != false) { + output.writeBool(2, authenticated_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -70928,13 +71704,10 @@ public final class ContextOuterClass { if (contextId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId()); } - if (!getIpAddressBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_); - } - if (port_ != 0) { - size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_); + if (authenticated_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -70944,21 +71717,19 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) { + if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) { return super.equals(obj); } - context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj; + context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj; if (hasContextId() != other.hasContextId()) return false; if (hasContextId()) { if (!getContextId().equals(other.getContextId())) return false; } - if (!getIpAddress().equals(other.getIpAddress())) - return false; - if (getPort() != other.getPort()) + if (getAuthenticated() != other.getAuthenticated()) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -70974,60 +71745,58 @@ public final class ContextOuterClass { hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER; hash = (53 * hash) + getContextId().hashCode(); } - hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER; - hash = (53 * hash) + getIpAddress().hashCode(); - hash = (37 * hash) + PORT_FIELD_NUMBER; - hash = (53 * hash) + getPort(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated()); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -71040,7 +71809,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) { + public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -71056,66 +71825,54 @@ public final class ContextOuterClass { } /** - *
-         * ----- Miscellaneous -------------------------------------------------------------------------------------------------
-         * 
- * - * Protobuf type {@code context.TeraFlowController} + * Protobuf type {@code context.AuthenticationResult} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.TeraFlowController) - context.ContextOuterClass.TeraFlowControllerOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult) + context.ContextOuterClass.AuthenticationResultOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; + return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class); + return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class); } - // Construct using context.ContextOuterClass.TeraFlowController.newBuilder() + // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; + bitField0_ = 0; + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } - ipAddress_ = ""; - port_ = 0; + authenticated_ = false; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor; + return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; } @java.lang.Override - public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() { - return context.ContextOuterClass.TeraFlowController.getDefaultInstance(); + public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { + return context.ContextOuterClass.AuthenticationResult.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.TeraFlowController build() { - context.ContextOuterClass.TeraFlowController result = buildPartial(); + public context.ContextOuterClass.AuthenticationResult build() { + context.ContextOuterClass.AuthenticationResult result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -71123,73 +71880,45 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.TeraFlowController buildPartial() { - context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this); - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + public context.ContextOuterClass.AuthenticationResult buildPartial() { + context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this); + if (bitField0_ != 0) { + buildPartial0(result); } - result.ipAddress_ = ipAddress_; - result.port_ = port_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.authenticated_ = authenticated_; + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.TeraFlowController) { - return mergeFrom((context.ContextOuterClass.TeraFlowController) other); + if (other instanceof context.ContextOuterClass.AuthenticationResult) { + return mergeFrom((context.ContextOuterClass.AuthenticationResult) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) { - if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) { + if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance()) return this; if (other.hasContextId()) { mergeContextId(other.getContextId()); } - if (!other.getIpAddress().isEmpty()) { - ipAddress_ = other.ipAddress_; - onChanged(); - } - if (other.getPort() != 0) { - setPort(other.getPort()); + if (other.getAuthenticated() != false) { + setAuthenticated(other.getAuthenticated()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -71201,20 +71930,54 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.TeraFlowController parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 16: + { + authenticated_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } + // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private context.ContextOuterClass.ContextId contextId_; private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_; @@ -71224,7 +71987,7 @@ public final class ContextOuterClass { * @return Whether the contextId field is set. */ public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -71248,10 +72011,11 @@ public final class ContextOuterClass { throw new NullPointerException(); } contextId_ = value; - onChanged(); } else { contextIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -71261,10 +72025,11 @@ public final class ContextOuterClass { public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { if (contextIdBuilder_ == null) { contextId_ = builderForValue.build(); - onChanged(); } else { contextIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -71273,15 +72038,16 @@ public final class ContextOuterClass { */ public Builder mergeContextId(context.ContextOuterClass.ContextId value) { if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) { + getContextIdBuilder().mergeFrom(value); } else { contextId_ = value; } - onChanged(); } else { contextIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -71289,13 +72055,13 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); - } else { - contextId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + contextId_ = null; + if (contextIdBuilder_ != null) { + contextIdBuilder_.dispose(); contextIdBuilder_ = null; } + onChanged(); return this; } @@ -71303,6 +72069,7 @@ public final class ContextOuterClass { * .context.ContextId context_id = 1; */ public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getContextIdFieldBuilder().getBuilder(); } @@ -71329,106 +72096,36 @@ public final class ContextOuterClass { return contextIdBuilder_; } - private java.lang.Object ipAddress_ = ""; - - /** - * string ip_address = 2; - * @return The ipAddress. - */ - public java.lang.String getIpAddress() { - java.lang.Object ref = ipAddress_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - ipAddress_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - - /** - * string ip_address = 2; - * @return The bytes for ipAddress. - */ - public com.google.protobuf.ByteString getIpAddressBytes() { - java.lang.Object ref = ipAddress_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - ipAddress_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - /** - * string ip_address = 2; - * @param value The ipAddress to set. - * @return This builder for chaining. - */ - public Builder setIpAddress(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ipAddress_ = value; - onChanged(); - return this; - } - - /** - * string ip_address = 2; - * @return This builder for chaining. - */ - public Builder clearIpAddress() { - ipAddress_ = getDefaultInstance().getIpAddress(); - onChanged(); - return this; - } - - /** - * string ip_address = 2; - * @param value The bytes for ipAddress to set. - * @return This builder for chaining. - */ - public Builder setIpAddressBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - ipAddress_ = value; - onChanged(); - return this; - } - - private int port_; + private boolean authenticated_; /** - * uint32 port = 3; - * @return The port. + * bool authenticated = 2; + * @return The authenticated. */ @java.lang.Override - public int getPort() { - return port_; + public boolean getAuthenticated() { + return authenticated_; } /** - * uint32 port = 3; - * @param value The port to set. + * bool authenticated = 2; + * @param value The authenticated to set. * @return This builder for chaining. */ - public Builder setPort(int value) { - port_ = value; + public Builder setAuthenticated(boolean value) { + authenticated_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * uint32 port = 3; + * bool authenticated = 2; * @return This builder for chaining. */ - public Builder clearPort() { - port_ = 0; + public Builder clearAuthenticated() { + bitField0_ = (bitField0_ & ~0x00000002); + authenticated_ = false; onChanged(); return this; } @@ -71442,198 +72139,141 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.TeraFlowController) + // @@protoc_insertion_point(builder_scope:context.AuthenticationResult) } - // @@protoc_insertion_point(class_scope:context.TeraFlowController) - private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.AuthenticationResult) + private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController(); + DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult(); } - public static context.ContextOuterClass.TeraFlowController getDefaultInstance() { + public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new TeraFlowController(input, extensionRegistry); + public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() { + public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface AuthenticationResultOrBuilder extends // @@protoc_insertion_point(interface_extends:context.AuthenticationResult) + public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId) com.google.protobuf.MessageOrBuilder { /** - * .context.ContextId context_id = 1; - * @return Whether the contextId field is set. - */ - boolean hasContextId(); - - /** - * .context.ContextId context_id = 1; - * @return The contextId. - */ - context.ContextOuterClass.ContextId getContextId(); - - /** - * .context.ContextId context_id = 1; + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. */ - context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder(); + java.lang.String getOpticalconfigUuid(); /** - * bool authenticated = 2; - * @return The authenticated. + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. */ - boolean getAuthenticated(); + com.google.protobuf.ByteString getOpticalconfigUuidBytes(); } /** - * Protobuf type {@code context.AuthenticationResult} + *
+     * ---------------- Experimental ------------------------
+     * 
+ * + * Protobuf type {@code context.OpticalConfigId} */ - public static final class AuthenticationResult extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.AuthenticationResult) - AuthenticationResultOrBuilder { + public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId) + OpticalConfigIdOrBuilder { private static final long serialVersionUID = 0L; - // Use AuthenticationResult.newBuilder() to construct. - private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfigId.newBuilder() to construct. + private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private AuthenticationResult() { + private OpticalConfigId() { + opticalconfigUuid_ = ""; } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new AuthenticationResult(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private AuthenticationResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.ContextId.Builder subBuilder = null; - if (contextId_ != null) { - subBuilder = contextId_.toBuilder(); - } - contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(contextId_); - contextId_ = subBuilder.buildPartial(); - } - break; - } - case 16: - { - authenticated_ = input.readBool(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new OpticalConfigId(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); } - public static final int CONTEXT_ID_FIELD_NUMBER = 1; - - private context.ContextOuterClass.ContextId contextId_; - - /** - * .context.ContextId context_id = 1; - * @return Whether the contextId field is set. - */ - @java.lang.Override - public boolean hasContextId() { - return contextId_ != null; - } + public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1; - /** - * .context.ContextId context_id = 1; - * @return The contextId. - */ - @java.lang.Override - public context.ContextOuterClass.ContextId getContextId() { - return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; - } + @SuppressWarnings("serial") + private volatile java.lang.Object opticalconfigUuid_ = ""; /** - * .context.ContextId context_id = 1; + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. */ @java.lang.Override - public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - return getContextId(); + public java.lang.String getOpticalconfigUuid() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + opticalconfigUuid_ = s; + return s; + } } - public static final int AUTHENTICATED_FIELD_NUMBER = 2; - - private boolean authenticated_; - /** - * bool authenticated = 2; - * @return The authenticated. + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. */ @java.lang.Override - public boolean getAuthenticated() { - return authenticated_; + public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + opticalconfigUuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } private byte memoizedIsInitialized = -1; @@ -71651,13 +72291,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (contextId_ != null) { - output.writeMessage(1, getContextId()); - } - if (authenticated_ != false) { - output.writeBool(2, authenticated_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -71666,13 +72303,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (contextId_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId()); - } - if (authenticated_ != false) { - size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -71682,19 +72316,13 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) { return super.equals(obj); } - context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj; - if (hasContextId() != other.hasContextId()) - return false; - if (hasContextId()) { - if (!getContextId().equals(other.getContextId())) - return false; - } - if (getAuthenticated() != other.getAuthenticated()) + context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj; + if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -71706,62 +72334,58 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasContextId()) { - hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER; - hash = (53 * hash) + getContextId().hashCode(); - } - hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated()); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigUuid().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -71774,7 +72398,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -71790,61 +72414,53 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.AuthenticationResult} + *
+         * ---------------- Experimental ------------------------
+         * 
+ * + * Protobuf type {@code context.OpticalConfigId} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult) - context.ContextOuterClass.AuthenticationResultOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId) + context.ContextOuterClass.OpticalConfigIdOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); } - // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (contextIdBuilder_ == null) { - contextId_ = null; - } else { - contextId_ = null; - contextIdBuilder_ = null; - } - authenticated_ = false; + bitField0_ = 0; + opticalconfigUuid_ = ""; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; } @java.lang.Override - public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { - return context.ContextOuterClass.AuthenticationResult.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigId.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.AuthenticationResult build() { - context.ContextOuterClass.AuthenticationResult result = buildPartial(); + public context.ContextOuterClass.OpticalConfigId build() { + context.ContextOuterClass.OpticalConfigId result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -71852,68 +72468,41 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.AuthenticationResult buildPartial() { - context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this); - if (contextIdBuilder_ == null) { - result.contextId_ = contextId_; - } else { - result.contextId_ = contextIdBuilder_.build(); + public context.ContextOuterClass.OpticalConfigId buildPartial() { + context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this); + if (bitField0_ != 0) { + buildPartial0(result); } - result.authenticated_ = authenticated_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalConfigId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.opticalconfigUuid_ = opticalconfigUuid_; + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.AuthenticationResult) { - return mergeFrom((context.ContextOuterClass.AuthenticationResult) other); + if (other instanceof context.ContextOuterClass.OpticalConfigId) { + return mergeFrom((context.ContextOuterClass.OpticalConfigId) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) { - if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) { + if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) return this; - if (other.hasContextId()) { - mergeContextId(other.getContextId()); - } - if (other.getAuthenticated() != false) { - setAuthenticated(other.getAuthenticated()); + if (!other.getOpticalconfigUuid().isEmpty()) { + opticalconfigUuid_ = other.opticalconfigUuid_; + bitField0_ |= 0x00000001; + onChanged(); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -71925,162 +72514,118 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.AuthenticationResult parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + opticalconfigUuid_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private context.ContextOuterClass.ContextId contextId_; - - private com.google.protobuf.SingleFieldBuilderV3 contextIdBuilder_; - - /** - * .context.ContextId context_id = 1; - * @return Whether the contextId field is set. - */ - public boolean hasContextId() { - return contextIdBuilder_ != null || contextId_ != null; - } - - /** - * .context.ContextId context_id = 1; - * @return The contextId. - */ - public context.ContextOuterClass.ContextId getContextId() { - if (contextIdBuilder_ == null) { - return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; - } else { - return contextIdBuilder_.getMessage(); - } - } - - /** - * .context.ContextId context_id = 1; - */ - public Builder setContextId(context.ContextOuterClass.ContextId value) { - if (contextIdBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - contextId_ = value; onChanged(); - } else { - contextIdBuilder_.setMessage(value); } + // finally return this; } - /** - * .context.ContextId context_id = 1; - */ - public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) { - if (contextIdBuilder_ == null) { - contextId_ = builderForValue.build(); - onChanged(); - } else { - contextIdBuilder_.setMessage(builderForValue.build()); - } - return this; - } + private int bitField0_; - /** - * .context.ContextId context_id = 1; - */ - public Builder mergeContextId(context.ContextOuterClass.ContextId value) { - if (contextIdBuilder_ == null) { - if (contextId_ != null) { - contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial(); - } else { - contextId_ = value; - } - onChanged(); - } else { - contextIdBuilder_.mergeFrom(value); - } - return this; - } + private java.lang.Object opticalconfigUuid_ = ""; /** - * .context.ContextId context_id = 1; + * string opticalconfig_uuid = 1; + * @return The opticalconfigUuid. */ - public Builder clearContextId() { - if (contextIdBuilder_ == null) { - contextId_ = null; - onChanged(); + public java.lang.String getOpticalconfigUuid() { + java.lang.Object ref = opticalconfigUuid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + opticalconfigUuid_ = s; + return s; } else { - contextId_ = null; - contextIdBuilder_ = null; + return (java.lang.String) ref; } - return this; - } - - /** - * .context.ContextId context_id = 1; - */ - public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() { - onChanged(); - return getContextIdFieldBuilder().getBuilder(); } /** - * .context.ContextId context_id = 1; + * string opticalconfig_uuid = 1; + * @return The bytes for opticalconfigUuid. */ - public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() { - if (contextIdBuilder_ != null) { - return contextIdBuilder_.getMessageOrBuilder(); + public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { + java.lang.Object ref = opticalconfigUuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + opticalconfigUuid_ = b; + return b; } else { - return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_; + return (com.google.protobuf.ByteString) ref; } } /** - * .context.ContextId context_id = 1; + * string opticalconfig_uuid = 1; + * @param value The opticalconfigUuid to set. + * @return This builder for chaining. */ - private com.google.protobuf.SingleFieldBuilderV3 getContextIdFieldBuilder() { - if (contextIdBuilder_ == null) { - contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getContextId(), getParentForChildren(), isClean()); - contextId_ = null; + public Builder setOpticalconfigUuid(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); } - return contextIdBuilder_; - } - - private boolean authenticated_; - - /** - * bool authenticated = 2; - * @return The authenticated. - */ - @java.lang.Override - public boolean getAuthenticated() { - return authenticated_; + opticalconfigUuid_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; } /** - * bool authenticated = 2; - * @param value The authenticated to set. + * string opticalconfig_uuid = 1; * @return This builder for chaining. */ - public Builder setAuthenticated(boolean value) { - authenticated_ = value; + public Builder clearOpticalconfigUuid() { + opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); return this; } /** - * bool authenticated = 2; + * string opticalconfig_uuid = 1; + * @param value The bytes for opticalconfigUuid to set. * @return This builder for chaining. */ - public Builder clearAuthenticated() { - authenticated_ = false; + public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + opticalconfigUuid_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -72094,176 +72639,233 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.AuthenticationResult) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigId) } - // @@protoc_insertion_point(class_scope:context.AuthenticationResult) - private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigId) + private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId(); } - public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AuthenticationResult(input, extensionRegistry); + public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId) + public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig) com.google.protobuf.MessageOrBuilder { /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. */ - java.lang.String getOpticalconfigUuid(); + boolean hasOpticalconfigId(); /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. */ - com.google.protobuf.ByteString getOpticalconfigUuidBytes(); - } + context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); - /** - *
-     * ---------------- Experimental ------------------------
-     * 
- * - * Protobuf type {@code context.OpticalConfigId} + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); + + /** + * string config = 2; + * @return The config. + */ + java.lang.String getConfig(); + + /** + * string config = 2; + * @return The bytes for config. + */ + com.google.protobuf.ByteString getConfigBytes(); + + /** + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. + */ + boolean hasDeviceId(); + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + context.ContextOuterClass.DeviceId getDeviceId(); + + /** + * .context.DeviceId device_id = 3; + */ + context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder(); + } + + /** + * Protobuf type {@code context.OpticalConfig} */ - public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId) - OpticalConfigIdOrBuilder { + public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig) + OpticalConfigOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfigId.newBuilder() to construct. - private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfig.newBuilder() to construct. + private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfigId() { - opticalconfigUuid_ = ""; + private OpticalConfig() { + config_ = ""; } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfigId(); + return new OpticalConfig(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); } - private OpticalConfigId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - opticalconfigUuid_ = s; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. + */ + @java.lang.Override + public boolean hasOpticalconfigId() { + return opticalconfigId_ != null; } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. + */ + @java.lang.Override + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } - public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1; + public static final int CONFIG_FIELD_NUMBER = 2; - private volatile java.lang.Object opticalconfigUuid_; + @SuppressWarnings("serial") + private volatile java.lang.Object config_ = ""; /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * string config = 2; + * @return The config. */ @java.lang.Override - public java.lang.String getOpticalconfigUuid() { - java.lang.Object ref = opticalconfigUuid_; + public java.lang.String getConfig() { + java.lang.Object ref = config_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - opticalconfigUuid_ = s; + config_ = s; return s; } } /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * string config = 2; + * @return The bytes for config. */ @java.lang.Override - public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { - java.lang.Object ref = opticalconfigUuid_; + public com.google.protobuf.ByteString getConfigBytes() { + java.lang.Object ref = config_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - opticalconfigUuid_ = b; + config_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } + public static final int DEVICE_ID_FIELD_NUMBER = 3; + + private context.ContextOuterClass.DeviceId deviceId_; + + /** + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. + */ + @java.lang.Override + public boolean hasDeviceId() { + return deviceId_ != null; + } + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + @java.lang.Override + public context.ContextOuterClass.DeviceId getDeviceId() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + + /** + * .context.DeviceId device_id = 3; + */ + @java.lang.Override + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -72279,10 +72881,16 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getOpticalconfigUuidBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_); + if (opticalconfigId_ != null) { + output.writeMessage(1, getOpticalconfigId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_); + } + if (deviceId_ != null) { + output.writeMessage(3, getDeviceId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -72291,10 +72899,16 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!getOpticalconfigUuidBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_); + if (opticalconfigId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_); + } + if (deviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -72304,13 +72918,25 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj; - if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid())) + context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj; + if (hasOpticalconfigId() != other.hasOpticalconfigId()) + return false; + if (hasOpticalconfigId()) { + if (!getOpticalconfigId().equals(other.getOpticalconfigId())) + return false; + } + if (!getConfig().equals(other.getConfig())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (hasDeviceId() != other.hasDeviceId()) + return false; + if (hasDeviceId()) { + if (!getDeviceId().equals(other.getDeviceId())) + return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -72322,58 +72948,66 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigUuid().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + if (hasOpticalconfigId()) { + hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigId().hashCode(); + } + hash = (37 * hash) + CONFIG_FIELD_NUMBER; + hash = (53 * hash) + getConfig().hashCode(); + if (hasDeviceId()) { + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -72386,7 +73020,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -72402,59 +73036,59 @@ public final class ContextOuterClass { } /** - *
-         * ---------------- Experimental ------------------------
-         * 
- * - * Protobuf type {@code context.OpticalConfigId} + * Protobuf type {@code context.OpticalConfig} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId) - context.ContextOuterClass.OpticalConfigIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig) + context.ContextOuterClass.OpticalConfigOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfig.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - opticalconfigUuid_ = ""; + bitField0_ = 0; + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; + } + config_ = ""; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfigId.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfig.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId build() { - context.ContextOuterClass.OpticalConfigId result = buildPartial(); + public context.ContextOuterClass.OpticalConfig build() { + context.ContextOuterClass.OpticalConfig result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -72462,61 +73096,53 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId buildPartial() { - context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this); - result.opticalconfigUuid_ = opticalconfigUuid_; + public context.ContextOuterClass.OpticalConfig buildPartial() { + context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this); + if (bitField0_ != 0) { + buildPartial0(result); + } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalConfig result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.config_ = config_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfigId) { - return mergeFrom((context.ContextOuterClass.OpticalConfigId) other); + if (other instanceof context.ContextOuterClass.OpticalConfig) { + return mergeFrom((context.ContextOuterClass.OpticalConfig) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) { - if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) { + if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance()) return this; - if (!other.getOpticalconfigUuid().isEmpty()) { - opticalconfigUuid_ = other.opticalconfigUuid_; + if (other.hasOpticalconfigId()) { + mergeOpticalconfigId(other.getOpticalconfigId()); + } + if (!other.getConfig().isEmpty()) { + config_ = other.config_; + bitField0_ |= 0x00000002; onChanged(); } - this.mergeUnknownFields(other.unknownFields); + if (other.hasDeviceId()) { + mergeDeviceId(other.getDeviceId()); + } + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -72528,32 +73154,191 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalConfigId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + config_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalConfigId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); + onChanged(); + } + // finally + return this; + } + + private int bitField0_; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return Whether the opticalconfigId field is set. + */ + public boolean hasOpticalconfigId() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + * @return The opticalconfigId. + */ + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + if (opticalconfigIdBuilder_ == null) { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } else { + return opticalconfigIdBuilder_.getMessage(); + } + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + opticalconfigId_ = value; + } else { + opticalconfigIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } - private java.lang.Object opticalconfigUuid_ = ""; + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { + if (opticalconfigIdBuilder_ == null) { + opticalconfigId_ = builderForValue.build(); + } else { + opticalconfigIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } /** - * string opticalconfig_uuid = 1; - * @return The opticalconfigUuid. + * .context.OpticalConfigId opticalconfig_id = 1; */ - public java.lang.String getOpticalconfigUuid() { - java.lang.Object ref = opticalconfigUuid_; + public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) { + getOpticalconfigIdBuilder().mergeFrom(value); + } else { + opticalconfigId_ = value; + } + } else { + opticalconfigIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public Builder clearOpticalconfigId() { + bitField0_ = (bitField0_ & ~0x00000001); + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getOpticalconfigIdFieldBuilder().getBuilder(); + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + if (opticalconfigIdBuilder_ != null) { + return opticalconfigIdBuilder_.getMessageOrBuilder(); + } else { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + } + + /** + * .context.OpticalConfigId opticalconfig_id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { + if (opticalconfigIdBuilder_ == null) { + opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); + opticalconfigId_ = null; + } + return opticalconfigIdBuilder_; + } + + private java.lang.Object config_ = ""; + + /** + * string config = 2; + * @return The config. + */ + public java.lang.String getConfig() { + java.lang.Object ref = config_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - opticalconfigUuid_ = s; + config_ = s; return s; } else { return (java.lang.String) ref; @@ -72561,14 +73346,14 @@ public final class ContextOuterClass { } /** - * string opticalconfig_uuid = 1; - * @return The bytes for opticalconfigUuid. + * string config = 2; + * @return The bytes for config. */ - public com.google.protobuf.ByteString getOpticalconfigUuidBytes() { - java.lang.Object ref = opticalconfigUuid_; + public com.google.protobuf.ByteString getConfigBytes() { + java.lang.Object ref = config_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - opticalconfigUuid_ = b; + config_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -72576,42 +73361,163 @@ public final class ContextOuterClass { } /** - * string opticalconfig_uuid = 1; - * @param value The opticalconfigUuid to set. - * @return This builder for chaining. + * string config = 2; + * @param value The config to set. + * @return This builder for chaining. + */ + public Builder setConfig(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + config_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * string config = 2; + * @return This builder for chaining. + */ + public Builder clearConfig() { + config_ = getDefaultInstance().getConfig(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * string config = 2; + * @param value The bytes for config to set. + * @return This builder for chaining. + */ + public Builder setConfigBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + config_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private context.ContextOuterClass.DeviceId deviceId_; + + private com.google.protobuf.SingleFieldBuilderV3 deviceIdBuilder_; + + /** + * .context.DeviceId device_id = 3; + * @return Whether the deviceId field is set. + */ + public boolean hasDeviceId() { + return ((bitField0_ & 0x00000004) != 0); + } + + /** + * .context.DeviceId device_id = 3; + * @return The deviceId. + */ + public context.ContextOuterClass.DeviceId getDeviceId() { + if (deviceIdBuilder_ == null) { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } else { + return deviceIdBuilder_.getMessage(); + } + } + + /** + * .context.DeviceId device_id = 3; + */ + public Builder setDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + deviceId_ = value; + } else { + deviceIdBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * .context.DeviceId device_id = 3; + */ + public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { + if (deviceIdBuilder_ == null) { + deviceId_ = builderForValue.build(); + } else { + deviceIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * .context.DeviceId device_id = 3; + */ + public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); + } else { + deviceId_ = value; + } + } else { + deviceIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * .context.DeviceId device_id = 3; + */ + public Builder clearDeviceId() { + bitField0_ = (bitField0_ & ~0x00000004); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.DeviceId device_id = 3; */ - public Builder setOpticalconfigUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - opticalconfigUuid_ = value; + public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000004; onChanged(); - return this; + return getDeviceIdFieldBuilder().getBuilder(); } /** - * string opticalconfig_uuid = 1; - * @return This builder for chaining. + * .context.DeviceId device_id = 3; */ - public Builder clearOpticalconfigUuid() { - opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid(); - onChanged(); - return this; + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + if (deviceIdBuilder_ != null) { + return deviceIdBuilder_.getMessageOrBuilder(); + } else { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } } /** - * string opticalconfig_uuid = 1; - * @param value The bytes for opticalconfigUuid to set. - * @return This builder for chaining. + * .context.DeviceId device_id = 3; */ - public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + private com.google.protobuf.SingleFieldBuilderV3 getDeviceIdFieldBuilder() { + if (deviceIdBuilder_ == null) { + deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDeviceId(), getParentForChildren(), isClean()); + deviceId_ = null; } - checkByteStringIsUtf8(value); - opticalconfigUuid_ = value; - onChanged(); - return this; + return deviceIdBuilder_; } @java.lang.Override @@ -72623,230 +73529,157 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfigId) + // @@protoc_insertion_point(builder_scope:context.OpticalConfig) } - // @@protoc_insertion_point(class_scope:context.OpticalConfigId) - private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfig) + private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig(); } - public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfig getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalConfigId(input, extensionRegistry); + public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig) + public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList) com.google.protobuf.MessageOrBuilder { /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - boolean hasOpticalconfigId(); + java.util.List getOpticalconfigsList(); /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); + context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index); /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); + int getOpticalconfigsCount(); /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - java.lang.String getConfig(); + java.util.List getOpticalconfigsOrBuilderList(); /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - com.google.protobuf.ByteString getConfigBytes(); + context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index); } /** - * Protobuf type {@code context.OpticalConfig} + * Protobuf type {@code context.OpticalConfigList} */ - public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig) - OpticalConfigOrBuilder { + public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList) + OpticalConfigListOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfig.newBuilder() to construct. - private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfigList.newBuilder() to construct. + private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfig() { - config_ = ""; + private OpticalConfigList() { + opticalconfigs_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfig(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private OpticalConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.OpticalConfigId.Builder subBuilder = null; - if (opticalconfigId_ != null) { - subBuilder = opticalconfigId_.toBuilder(); - } - opticalconfigId_ = input.readMessage(context.ContextOuterClass.OpticalConfigId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(opticalconfigId_); - opticalconfigId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - config_ = s; - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new OpticalConfigList(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); } - public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1; + public static final int OPTICALCONFIGS_FIELD_NUMBER = 1; - private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + @SuppressWarnings("serial") + private java.util.List opticalconfigs_; /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public boolean hasOpticalconfigId() { - return opticalconfigId_ != null; + public java.util.List getOpticalconfigsList() { + return opticalconfigs_; } /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + public java.util.List getOpticalconfigsOrBuilderList() { + return opticalconfigs_; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { - return getOpticalconfigId(); + public int getOpticalconfigsCount() { + return opticalconfigs_.size(); } - public static final int CONFIG_FIELD_NUMBER = 2; - - private volatile java.lang.Object config_; - /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public java.lang.String getConfig() { - java.lang.Object ref = config_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - config_ = s; - return s; - } + public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { + return opticalconfigs_.get(index); } /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ @java.lang.Override - public com.google.protobuf.ByteString getConfigBytes() { - java.lang.Object ref = config_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - config_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { + return opticalconfigs_.get(index); } private byte memoizedIsInitialized = -1; @@ -72864,13 +73697,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (opticalconfigId_ != null) { - output.writeMessage(1, getOpticalconfigId()); - } - if (!getConfigBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_); + for (int i = 0; i < opticalconfigs_.size(); i++) { + output.writeMessage(1, opticalconfigs_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -72879,13 +73709,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (opticalconfigId_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId()); - } - if (!getConfigBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_); + for (int i = 0; i < opticalconfigs_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -72895,19 +73722,13 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj; - if (hasOpticalconfigId() != other.hasOpticalconfigId()) - return false; - if (hasOpticalconfigId()) { - if (!getOpticalconfigId().equals(other.getOpticalconfigId())) - return false; - } - if (!getConfig().equals(other.getConfig())) + context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj; + if (!getOpticalconfigsList().equals(other.getOpticalconfigsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -72919,62 +73740,60 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasOpticalconfigId()) { - hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigId().hashCode(); + if (getOpticalconfigsCount() > 0) { + hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigsList().hashCode(); } - hash = (37 * hash) + CONFIG_FIELD_NUMBER; - hash = (53 * hash) + getConfig().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -72987,7 +73806,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -73003,61 +73822,55 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalConfig} + * Protobuf type {@code context.OpticalConfigList} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig) - context.ContextOuterClass.OpticalConfigOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList) + context.ContextOuterClass.OpticalConfigListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfig.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (opticalconfigIdBuilder_ == null) { - opticalconfigId_ = null; + bitField0_ = 0; + if (opticalconfigsBuilder_ == null) { + opticalconfigs_ = java.util.Collections.emptyList(); } else { - opticalconfigId_ = null; - opticalconfigIdBuilder_ = null; + opticalconfigs_ = null; + opticalconfigsBuilder_.clear(); } - config_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfig.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigList.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfig build() { - context.ContextOuterClass.OpticalConfig result = buildPartial(); + public context.ContextOuterClass.OpticalConfigList build() { + context.ContextOuterClass.OpticalConfigList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -73065,69 +73878,70 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfig buildPartial() { - context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this); - if (opticalconfigIdBuilder_ == null) { - result.opticalconfigId_ = opticalconfigId_; - } else { - result.opticalconfigId_ = opticalconfigIdBuilder_.build(); + public context.ContextOuterClass.OpticalConfigList buildPartial() { + context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.config_ = config_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalConfigList result) { + if (opticalconfigsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.opticalconfigs_ = opticalconfigs_; + } else { + result.opticalconfigs_ = opticalconfigsBuilder_.build(); + } } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalConfigList result) { + int from_bitField0_ = bitField0_; } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfig) { - return mergeFrom((context.ContextOuterClass.OpticalConfig) other); + if (other instanceof context.ContextOuterClass.OpticalConfigList) { + return mergeFrom((context.ContextOuterClass.OpticalConfigList) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) { - if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) { + if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance()) return this; - if (other.hasOpticalconfigId()) { - mergeOpticalconfigId(other.getOpticalconfigId()); - } - if (!other.getConfig().isEmpty()) { - config_ = other.config_; - onChanged(); + if (opticalconfigsBuilder_ == null) { + if (!other.opticalconfigs_.isEmpty()) { + if (opticalconfigs_.isEmpty()) { + opticalconfigs_ = other.opticalconfigs_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.addAll(other.opticalconfigs_); + } + onChanged(); + } + } else { + if (!other.opticalconfigs_.isEmpty()) { + if (opticalconfigsBuilder_.isEmpty()) { + opticalconfigsBuilder_.dispose(); + opticalconfigsBuilder_ = null; + opticalconfigs_ = other.opticalconfigs_; + bitField0_ = (bitField0_ & ~0x00000001); + opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null; + } else { + opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_); + } + } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -73139,204 +73953,287 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalConfig parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.OpticalConfig m = input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry); + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(m); + } else { + opticalconfigsBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalConfig) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } - private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + private int bitField0_; - private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + private java.util.List opticalconfigs_ = java.util.Collections.emptyList(); + + private void ensureOpticalconfigsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + opticalconfigs_ = new java.util.ArrayList(opticalconfigs_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3 opticalconfigsBuilder_; /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return Whether the opticalconfigId field is set. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public boolean hasOpticalconfigId() { - return opticalconfigIdBuilder_ != null || opticalconfigId_ != null; + public java.util.List getOpticalconfigsList() { + if (opticalconfigsBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalconfigs_); + } else { + return opticalconfigsBuilder_.getMessageList(); + } } /** - * .context.OpticalConfigId opticalconfig_id = 1; - * @return The opticalconfigId. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { - if (opticalconfigIdBuilder_ == null) { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + public int getOpticalconfigsCount() { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.size(); } else { - return opticalconfigIdBuilder_.getMessage(); + return opticalconfigsBuilder_.getCount(); } } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { - if (opticalconfigIdBuilder_ == null) { + public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.get(index); + } else { + return opticalconfigsBuilder_.getMessage(index); + } + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalconfigId_ = value; + ensureOpticalconfigsIsMutable(); + opticalconfigs_.set(index, value); onChanged(); } else { - opticalconfigIdBuilder_.setMessage(value); + opticalconfigsBuilder_.setMessage(index, value); } return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { - if (opticalconfigIdBuilder_ == null) { - opticalconfigId_ = builderForValue.build(); + public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.set(index, builderForValue.build()); onChanged(); } else { - opticalconfigIdBuilder_.setMessage(builderForValue.build()); + opticalconfigsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { - if (opticalconfigIdBuilder_ == null) { - if (opticalconfigId_ != null) { - opticalconfigId_ = context.ContextOuterClass.OpticalConfigId.newBuilder(opticalconfigId_).mergeFrom(value).buildPartial(); - } else { - opticalconfigId_ = value; + public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(value); onChanged(); } else { - opticalconfigIdBuilder_.mergeFrom(value); + opticalconfigsBuilder_.addMessage(value); } return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder clearOpticalconfigId() { - if (opticalconfigIdBuilder_ == null) { - opticalconfigId_ = null; + public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { + if (opticalconfigsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(index, value); onChanged(); } else { - opticalconfigId_ = null; - opticalconfigIdBuilder_ = null; + opticalconfigsBuilder_.addMessage(index, value); } return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { - onChanged(); - return getOpticalconfigIdFieldBuilder().getBuilder(); + public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(builderForValue.build()); + onChanged(); + } else { + opticalconfigsBuilder_.addMessage(builderForValue.build()); + } + return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { - if (opticalconfigIdBuilder_ != null) { - return opticalconfigIdBuilder_.getMessageOrBuilder(); + public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.add(index, builderForValue.build()); + onChanged(); + } else { + opticalconfigsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder addAllOpticalconfigs(java.lang.Iterable values) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_); + onChanged(); + } else { + opticalconfigsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder clearOpticalconfigs() { + if (opticalconfigsBuilder_ == null) { + opticalconfigs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + opticalconfigsBuilder_.clear(); + } + return this; + } + + /** + * repeated .context.OpticalConfig opticalconfigs = 1; + */ + public Builder removeOpticalconfigs(int index) { + if (opticalconfigsBuilder_ == null) { + ensureOpticalconfigsIsMutable(); + opticalconfigs_.remove(index); + onChanged(); } else { - return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + opticalconfigsBuilder_.remove(index); } + return this; } /** - * .context.OpticalConfigId opticalconfig_id = 1; + * repeated .context.OpticalConfig opticalconfigs = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { - if (opticalconfigIdBuilder_ == null) { - opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); - opticalconfigId_ = null; - } - return opticalconfigIdBuilder_; + public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) { + return getOpticalconfigsFieldBuilder().getBuilder(index); } - private java.lang.Object config_ = ""; - /** - * string config = 2; - * @return The config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public java.lang.String getConfig() { - java.lang.Object ref = config_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - config_ = s; - return s; + public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { + if (opticalconfigsBuilder_ == null) { + return opticalconfigs_.get(index); } else { - return (java.lang.String) ref; + return opticalconfigsBuilder_.getMessageOrBuilder(index); } } /** - * string config = 2; - * @return The bytes for config. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public com.google.protobuf.ByteString getConfigBytes() { - java.lang.Object ref = config_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - config_ = b; - return b; + public java.util.List getOpticalconfigsOrBuilderList() { + if (opticalconfigsBuilder_ != null) { + return opticalconfigsBuilder_.getMessageOrBuilderList(); } else { - return (com.google.protobuf.ByteString) ref; + return java.util.Collections.unmodifiableList(opticalconfigs_); } } /** - * string config = 2; - * @param value The config to set. - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setConfig(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - config_ = value; - onChanged(); - return this; + public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() { + return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance()); } /** - * string config = 2; - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder clearConfig() { - config_ = getDefaultInstance().getConfig(); - onChanged(); - return this; + public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) { + return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance()); } /** - * string config = 2; - * @param value The bytes for config to set. - * @return This builder for chaining. + * repeated .context.OpticalConfig opticalconfigs = 1; */ - public Builder setConfigBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public java.util.List getOpticalconfigsBuilderList() { + return getOpticalconfigsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalconfigsFieldBuilder() { + if (opticalconfigsBuilder_ == null) { + opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + opticalconfigs_ = null; } - checkByteStringIsUtf8(value); - config_ = value; - onChanged(); - return this; + return opticalconfigsBuilder_; } @java.lang.Override @@ -73348,197 +74245,180 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfig) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigList) } - // @@protoc_insertion_point(class_scope:context.OpticalConfig) - private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigList) + private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList(); } - public static context.ContextOuterClass.OpticalConfig getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalConfig(input, extensionRegistry); + public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList) + public interface OpticalConfigEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigEvent) com.google.protobuf.MessageOrBuilder { /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ - java.util.List getOpticalconfigsList(); + boolean hasEvent(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ - context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index); + context.ContextOuterClass.Event getEvent(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - int getOpticalconfigsCount(); + context.ContextOuterClass.EventOrBuilder getEventOrBuilder(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ - java.util.List getOpticalconfigsOrBuilderList(); + boolean hasOpticalconfigId(); /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. */ - context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index); + context.ContextOuterClass.OpticalConfigId getOpticalconfigId(); + + /** + * .context.OpticalConfigId opticalconfig_id = 2; + */ + context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder(); } /** - * Protobuf type {@code context.OpticalConfigList} + * Protobuf type {@code context.OpticalConfigEvent} */ - public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList) - OpticalConfigListOrBuilder { + public static final class OpticalConfigEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigEvent) + OpticalConfigEventOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalConfigList.newBuilder() to construct. - private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalConfigEvent.newBuilder() to construct. + private OpticalConfigEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalConfigList() { - opticalconfigs_ = java.util.Collections.emptyList(); + private OpticalConfigEvent() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalConfigList(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private OpticalConfigList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - opticalconfigs_.add(input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new OpticalConfigEvent(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class); } - public static final int OPTICALCONFIGS_FIELD_NUMBER = 1; + public static final int EVENT_FIELD_NUMBER = 1; - private java.util.List opticalconfigs_; + private context.ContextOuterClass.Event event_; /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ @java.lang.Override - public java.util.List getOpticalconfigsList() { - return opticalconfigs_; + public boolean hasEvent() { + return event_ != null; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ @java.lang.Override - public java.util.List getOpticalconfigsOrBuilderList() { - return opticalconfigs_; + public context.ContextOuterClass.Event getEvent() { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ @java.lang.Override - public int getOpticalconfigsCount() { - return opticalconfigs_.size(); + public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } + public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 2; + + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ @java.lang.Override - public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { - return opticalconfigs_.get(index); + public boolean hasOpticalconfigId() { + return opticalconfigId_ != null; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. */ @java.lang.Override - public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { - return opticalconfigs_.get(index); + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } + + /** + * .context.OpticalConfigId opticalconfig_id = 2; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } private byte memoizedIsInitialized = -1; @@ -73556,10 +74436,13 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < opticalconfigs_.size(); i++) { - output.writeMessage(1, opticalconfigs_.get(i)); + if (event_ != null) { + output.writeMessage(1, getEvent()); + } + if (opticalconfigId_ != null) { + output.writeMessage(2, getOpticalconfigId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -73568,10 +74451,13 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - for (int i = 0; i < opticalconfigs_.size(); i++) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i)); + if (event_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent()); + } + if (opticalconfigId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalconfigId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -73581,13 +74467,23 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) { + if (!(obj instanceof context.ContextOuterClass.OpticalConfigEvent)) { return super.equals(obj); } - context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj; - if (!getOpticalconfigsList().equals(other.getOpticalconfigsList())) + context.ContextOuterClass.OpticalConfigEvent other = (context.ContextOuterClass.OpticalConfigEvent) obj; + if (hasEvent() != other.hasEvent()) + return false; + if (hasEvent()) { + if (!getEvent().equals(other.getEvent())) + return false; + } + if (hasOpticalconfigId() != other.hasOpticalconfigId()) return false; - if (!unknownFields.equals(other.unknownFields)) + if (hasOpticalconfigId()) { + if (!getOpticalconfigId().equals(other.getOpticalconfigId())) + return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -73599,60 +74495,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getOpticalconfigsCount() > 0) { - hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER; - hash = (53 * hash) + getOpticalconfigsList().hashCode(); + if (hasEvent()) { + hash = (37 * hash) + EVENT_FIELD_NUMBER; + hash = (53 * hash) + getEvent().hashCode(); + } + if (hasOpticalconfigId()) { + hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER; + hash = (53 * hash) + getOpticalconfigId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -73665,7 +74565,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalConfigEvent prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -73681,61 +74581,58 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalConfigList} + * Protobuf type {@code context.OpticalConfigEvent} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList) - context.ContextOuterClass.OpticalConfigListOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigEvent) + context.ContextOuterClass.OpticalConfigEventOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class); } - // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder() + // Construct using context.ContextOuterClass.OpticalConfigEvent.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getOpticalconfigsFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (opticalconfigsBuilder_ == null) { - opticalconfigs_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - } else { - opticalconfigsBuilder_.clear(); + bitField0_ = 0; + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); + eventBuilder_ = null; + } + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalConfigList.getDefaultInstance(); + public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList build() { - context.ContextOuterClass.OpticalConfigList result = buildPartial(); + public context.ContextOuterClass.OpticalConfigEvent build() { + context.ContextOuterClass.OpticalConfigEvent result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -73743,90 +74640,45 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList buildPartial() { - context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this); - int from_bitField0_ = bitField0_; - if (opticalconfigsBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.opticalconfigs_ = opticalconfigs_; - } else { - result.opticalconfigs_ = opticalconfigsBuilder_.build(); + public context.ContextOuterClass.OpticalConfigEvent buildPartial() { + context.ContextOuterClass.OpticalConfigEvent result = new context.ContextOuterClass.OpticalConfigEvent(this); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalConfigEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalConfigList) { - return mergeFrom((context.ContextOuterClass.OpticalConfigList) other); + if (other instanceof context.ContextOuterClass.OpticalConfigEvent) { + return mergeFrom((context.ContextOuterClass.OpticalConfigEvent) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) { - if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalConfigEvent other) { + if (other == context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance()) return this; - if (opticalconfigsBuilder_ == null) { - if (!other.opticalconfigs_.isEmpty()) { - if (opticalconfigs_.isEmpty()) { - opticalconfigs_ = other.opticalconfigs_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.addAll(other.opticalconfigs_); - } - onChanged(); - } - } else { - if (!other.opticalconfigs_.isEmpty()) { - if (opticalconfigsBuilder_.isEmpty()) { - opticalconfigsBuilder_.dispose(); - opticalconfigsBuilder_ = null; - opticalconfigs_ = other.opticalconfigs_; - bitField0_ = (bitField0_ & ~0x00000001); - opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null; - } else { - opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_); - } - } + if (other.hasEvent()) { + mergeEvent(other.getEvent()); + } + if (other.hasOpticalconfigId()) { + mergeOpticalconfigId(other.getOpticalconfigId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -73838,257 +74690,288 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalConfigList parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalConfigList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } private int bitField0_; - private java.util.List opticalconfigs_ = java.util.Collections.emptyList(); - - private void ensureOpticalconfigsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - opticalconfigs_ = new java.util.ArrayList(opticalconfigs_); - bitField0_ |= 0x00000001; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3 opticalconfigsBuilder_; + private context.ContextOuterClass.Event event_; - /** - * repeated .context.OpticalConfig opticalconfigs = 1; - */ - public java.util.List getOpticalconfigsList() { - if (opticalconfigsBuilder_ == null) { - return java.util.Collections.unmodifiableList(opticalconfigs_); - } else { - return opticalconfigsBuilder_.getMessageList(); - } - } + private com.google.protobuf.SingleFieldBuilderV3 eventBuilder_; /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return Whether the event field is set. */ - public int getOpticalconfigsCount() { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.size(); - } else { - return opticalconfigsBuilder_.getCount(); - } + public boolean hasEvent() { + return ((bitField0_ & 0x00000001) != 0); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; + * @return The event. */ - public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.get(index); + public context.ContextOuterClass.Event getEvent() { + if (eventBuilder_ == null) { + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } else { - return opticalconfigsBuilder_.getMessage(index); + return eventBuilder_.getMessage(); } } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { + public Builder setEvent(context.ContextOuterClass.Event value) { + if (eventBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.set(index, value); - onChanged(); + event_ = value; } else { - opticalconfigsBuilder_.setMessage(index, value); + eventBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.set(index, builderForValue.build()); - onChanged(); + public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) { + if (eventBuilder_ == null) { + event_ = builderForValue.build(); } else { - opticalconfigsBuilder_.setMessage(index, builderForValue.build()); + eventBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); + public Builder mergeEvent(context.ContextOuterClass.Event value) { + if (eventBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) { + getEventBuilder().mergeFrom(value); + } else { + event_ = value; } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(value); - onChanged(); } else { - opticalconfigsBuilder_.addMessage(value); + eventBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) { - if (opticalconfigsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(index, value); - onChanged(); - } else { - opticalconfigsBuilder_.addMessage(index, value); + public Builder clearEvent() { + bitField0_ = (bitField0_ & ~0x00000001); + event_ = null; + if (eventBuilder_ != null) { + eventBuilder_.dispose(); + eventBuilder_ = null; } + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(builderForValue.build()); - onChanged(); + public context.ContextOuterClass.Event.Builder getEventBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEventFieldBuilder().getBuilder(); + } + + /** + * .context.Event event = 1; + */ + public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() { + if (eventBuilder_ != null) { + return eventBuilder_.getMessageOrBuilder(); } else { - opticalconfigsBuilder_.addMessage(builderForValue.build()); + return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_; } - return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.Event event = 1; */ - public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.add(index, builderForValue.build()); - onChanged(); - } else { - opticalconfigsBuilder_.addMessage(index, builderForValue.build()); + private com.google.protobuf.SingleFieldBuilderV3 getEventFieldBuilder() { + if (eventBuilder_ == null) { + eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getEvent(), getParentForChildren(), isClean()); + event_ = null; } - return this; + return eventBuilder_; } + private context.ContextOuterClass.OpticalConfigId opticalconfigId_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalconfigIdBuilder_; + /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; + * @return Whether the opticalconfigId field is set. */ - public Builder addAllOpticalconfigs(java.lang.Iterable values) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_); - onChanged(); + public boolean hasOpticalconfigId() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * .context.OpticalConfigId opticalconfig_id = 2; + * @return The opticalconfigId. + */ + public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() { + if (opticalconfigIdBuilder_ == null) { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; } else { - opticalconfigsBuilder_.addAllMessages(values); + return opticalconfigIdBuilder_.getMessage(); } - return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public Builder clearOpticalconfigs() { - if (opticalconfigsBuilder_ == null) { - opticalconfigs_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + opticalconfigId_ = value; } else { - opticalconfigsBuilder_.clear(); + opticalconfigIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public Builder removeOpticalconfigs(int index) { - if (opticalconfigsBuilder_ == null) { - ensureOpticalconfigsIsMutable(); - opticalconfigs_.remove(index); - onChanged(); + public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) { + if (opticalconfigIdBuilder_ == null) { + opticalconfigId_ = builderForValue.build(); } else { - opticalconfigsBuilder_.remove(index); + opticalconfigIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; - */ - public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) { - return getOpticalconfigsFieldBuilder().getBuilder(index); - } - - /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) { - if (opticalconfigsBuilder_ == null) { - return opticalconfigs_.get(index); + public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) { + if (opticalconfigIdBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) { + getOpticalconfigIdBuilder().mergeFrom(value); + } else { + opticalconfigId_ = value; + } } else { - return opticalconfigsBuilder_.getMessageOrBuilder(index); + opticalconfigIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public java.util.List getOpticalconfigsOrBuilderList() { - if (opticalconfigsBuilder_ != null) { - return opticalconfigsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(opticalconfigs_); + public Builder clearOpticalconfigId() { + bitField0_ = (bitField0_ & ~0x00000002); + opticalconfigId_ = null; + if (opticalconfigIdBuilder_ != null) { + opticalconfigIdBuilder_.dispose(); + opticalconfigIdBuilder_ = null; } + onChanged(); + return this; } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() { - return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance()); + public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getOpticalconfigIdFieldBuilder().getBuilder(); } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) { - return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance()); + public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() { + if (opticalconfigIdBuilder_ != null) { + return opticalconfigIdBuilder_.getMessageOrBuilder(); + } else { + return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_; + } } /** - * repeated .context.OpticalConfig opticalconfigs = 1; + * .context.OpticalConfigId opticalconfig_id = 2; */ - public java.util.List getOpticalconfigsBuilderList() { - return getOpticalconfigsFieldBuilder().getBuilderList(); - } - - private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalconfigsFieldBuilder() { - if (opticalconfigsBuilder_ == null) { - opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - opticalconfigs_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getOpticalconfigIdFieldBuilder() { + if (opticalconfigIdBuilder_ == null) { + opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalconfigId(), getParentForChildren(), isClean()); + opticalconfigId_ = null; } - return opticalconfigsBuilder_; + return opticalconfigIdBuilder_; } @java.lang.Override @@ -74100,174 +74983,180 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalConfigList) + // @@protoc_insertion_point(builder_scope:context.OpticalConfigEvent) } - // @@protoc_insertion_point(class_scope:context.OpticalConfigList) - private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalConfigEvent) + private static final context.ContextOuterClass.OpticalConfigEvent DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigEvent(); } - public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() { + public static context.ContextOuterClass.OpticalConfigEvent getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalConfigList(input, extensionRegistry); + public OpticalConfigEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkId) + public interface OpticalEndPointIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalEndPointId) com.google.protobuf.MessageOrBuilder { /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. + */ + boolean hasDeviceId(); + + /** + * .context.DeviceId device_id = 2; + * @return The deviceId. + */ + context.ContextOuterClass.DeviceId getDeviceId(); + + /** + * .context.DeviceId device_id = 2; + */ + context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder(); + + /** + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. */ - boolean hasOpticalLinkUuid(); + boolean hasEndpointUuid(); /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. */ - context.ContextOuterClass.Uuid getOpticalLinkUuid(); + context.ContextOuterClass.Uuid getEndpointUuid(); /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder(); + context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder(); } /** - * Protobuf type {@code context.OpticalLinkId} + * Protobuf type {@code context.OpticalEndPointId} */ - public static final class OpticalLinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkId) - OpticalLinkIdOrBuilder { + public static final class OpticalEndPointId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalEndPointId) + OpticalEndPointIdOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLinkId.newBuilder() to construct. - private OpticalLinkId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalEndPointId.newBuilder() to construct. + private OpticalEndPointId(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLinkId() { + private OpticalEndPointId() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLinkId(); + return new OpticalEndPointId(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class); } - private OpticalLinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (opticalLinkUuid_ != null) { - subBuilder = opticalLinkUuid_.toBuilder(); - } - opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(opticalLinkUuid_); - opticalLinkUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + public static final int DEVICE_ID_FIELD_NUMBER = 2; + + private context.ContextOuterClass.DeviceId deviceId_; + + /** + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. + */ + @java.lang.Override + public boolean hasDeviceId() { + return deviceId_ != null; } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + /** + * .context.DeviceId device_id = 2; + * @return The deviceId. + */ + @java.lang.Override + public context.ContextOuterClass.DeviceId getDeviceId() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } + /** + * .context.DeviceId device_id = 2; + */ @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class); + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } - public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 1; + public static final int ENDPOINT_UUID_FIELD_NUMBER = 3; - private context.ContextOuterClass.Uuid opticalLinkUuid_; + private context.ContextOuterClass.Uuid endpointUuid_; /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. */ @java.lang.Override - public boolean hasOpticalLinkUuid() { - return opticalLinkUuid_ != null; + public boolean hasEndpointUuid() { + return endpointUuid_ != null; } /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. */ @java.lang.Override - public context.ContextOuterClass.Uuid getOpticalLinkUuid() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.Uuid getEndpointUuid() { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ @java.lang.Override - public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() { - return getOpticalLinkUuid(); + public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } private byte memoizedIsInitialized = -1; @@ -74285,10 +75174,13 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (opticalLinkUuid_ != null) { - output.writeMessage(1, getOpticalLinkUuid()); + if (deviceId_ != null) { + output.writeMessage(2, getDeviceId()); + } + if (endpointUuid_ != null) { + output.writeMessage(3, getEndpointUuid()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -74297,10 +75189,13 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (opticalLinkUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalLinkUuid()); + if (deviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId()); } - size += unknownFields.getSerializedSize(); + if (endpointUuid_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid()); + } + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -74310,17 +75205,23 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLinkId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalEndPointId)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLinkId other = (context.ContextOuterClass.OpticalLinkId) obj; - if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid()) + context.ContextOuterClass.OpticalEndPointId other = (context.ContextOuterClass.OpticalEndPointId) obj; + if (hasDeviceId() != other.hasDeviceId()) + return false; + if (hasDeviceId()) { + if (!getDeviceId().equals(other.getDeviceId())) + return false; + } + if (hasEndpointUuid() != other.hasEndpointUuid()) return false; - if (hasOpticalLinkUuid()) { - if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid())) + if (hasEndpointUuid()) { + if (!getEndpointUuid().equals(other.getEndpointUuid())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -74332,60 +75233,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasOpticalLinkUuid()) { - hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalLinkUuid().hashCode(); + if (hasDeviceId()) { + hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getDeviceId().hashCode(); + } + if (hasEndpointUuid()) { + hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER; + hash = (53 * hash) + getEndpointUuid().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -74398,7 +75303,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLinkId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalEndPointId prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -74414,60 +75319,58 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLinkId} + * Protobuf type {@code context.OpticalEndPointId} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkId) - context.ContextOuterClass.OpticalLinkIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalEndPointId) + context.ContextOuterClass.OpticalEndPointIdOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLinkId.newBuilder() + // Construct using context.ContextOuterClass.OpticalEndPointId.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = null; - } else { - opticalLinkUuid_ = null; - opticalLinkUuidBuilder_ = null; + bitField0_ = 0; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } + endpointUuid_ = null; + if (endpointUuidBuilder_ != null) { + endpointUuidBuilder_.dispose(); + endpointUuidBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLinkId.getDefaultInstance(); + public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalEndPointId.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId build() { - context.ContextOuterClass.OpticalLinkId result = buildPartial(); + public context.ContextOuterClass.OpticalEndPointId build() { + context.ContextOuterClass.OpticalEndPointId result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -74475,64 +75378,45 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId buildPartial() { - context.ContextOuterClass.OpticalLinkId result = new context.ContextOuterClass.OpticalLinkId(this); - if (opticalLinkUuidBuilder_ == null) { - result.opticalLinkUuid_ = opticalLinkUuid_; - } else { - result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build(); + public context.ContextOuterClass.OpticalEndPointId buildPartial() { + context.ContextOuterClass.OpticalEndPointId result = new context.ContextOuterClass.OpticalEndPointId(this); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalEndPointId result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLinkId) { - return mergeFrom((context.ContextOuterClass.OpticalLinkId) other); + if (other instanceof context.ContextOuterClass.OpticalEndPointId) { + return mergeFrom((context.ContextOuterClass.OpticalEndPointId) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLinkId other) { - if (other == context.ContextOuterClass.OpticalLinkId.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalEndPointId other) { + if (other == context.ContextOuterClass.OpticalEndPointId.getDefaultInstance()) return this; - if (other.hasOpticalLinkUuid()) { - mergeOpticalLinkUuid(other.getOpticalLinkUuid()); + if (other.hasDeviceId()) { + mergeDeviceId(other.getDeviceId()); + } + if (other.hasEndpointUuid()) { + mergeEndpointUuid(other.getEndpointUuid()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -74544,132 +75428,288 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalLinkId parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 18: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 18 + case 26: + { + input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalLinkId) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } - private context.ContextOuterClass.Uuid opticalLinkUuid_; + private int bitField0_; + + private context.ContextOuterClass.DeviceId deviceId_; - private com.google.protobuf.SingleFieldBuilderV3 opticalLinkUuidBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 deviceIdBuilder_; /** - * .context.Uuid optical_link_uuid = 1; - * @return Whether the opticalLinkUuid field is set. + * .context.DeviceId device_id = 2; + * @return Whether the deviceId field is set. */ - public boolean hasOpticalLinkUuid() { - return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null; + public boolean hasDeviceId() { + return ((bitField0_ & 0x00000001) != 0); } /** - * .context.Uuid optical_link_uuid = 1; - * @return The opticalLinkUuid. + * .context.DeviceId device_id = 2; + * @return The deviceId. */ - public context.ContextOuterClass.Uuid getOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.DeviceId getDeviceId() { + if (deviceIdBuilder_ == null) { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } else { - return opticalLinkUuidBuilder_.getMessage(); + return deviceIdBuilder_.getMessage(); } } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid value) { - if (opticalLinkUuidBuilder_ == null) { + public Builder setDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalLinkUuid_ = value; - onChanged(); + deviceId_ = value; } else { - opticalLinkUuidBuilder_.setMessage(value); + deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = builderForValue.build(); - onChanged(); + public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { + if (deviceIdBuilder_ == null) { + deviceId_ = builderForValue.build(); } else { - opticalLinkUuidBuilder_.setMessage(builderForValue.build()); + deviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder mergeOpticalLinkUuid(context.ContextOuterClass.Uuid value) { - if (opticalLinkUuidBuilder_ == null) { - if (opticalLinkUuid_ != null) { - opticalLinkUuid_ = context.ContextOuterClass.Uuid.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial(); + public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { + if (deviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { - opticalLinkUuid_ = value; + deviceId_ = value; } - onChanged(); } else { - opticalLinkUuidBuilder_.mergeFrom(value); + deviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.DeviceId device_id = 2; */ - public Builder clearOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = null; - onChanged(); + public Builder clearDeviceId() { + bitField0_ = (bitField0_ & ~0x00000001); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); + deviceIdBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * .context.DeviceId device_id = 2; + */ + public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getDeviceIdFieldBuilder().getBuilder(); + } + + /** + * .context.DeviceId device_id = 2; + */ + public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { + if (deviceIdBuilder_ != null) { + return deviceIdBuilder_.getMessageOrBuilder(); + } else { + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; + } + } + + /** + * .context.DeviceId device_id = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3 getDeviceIdFieldBuilder() { + if (deviceIdBuilder_ == null) { + deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDeviceId(), getParentForChildren(), isClean()); + deviceId_ = null; + } + return deviceIdBuilder_; + } + + private context.ContextOuterClass.Uuid endpointUuid_; + + private com.google.protobuf.SingleFieldBuilderV3 endpointUuidBuilder_; + + /** + * .context.Uuid endpoint_uuid = 3; + * @return Whether the endpointUuid field is set. + */ + public boolean hasEndpointUuid() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * .context.Uuid endpoint_uuid = 3; + * @return The endpointUuid. + */ + public context.ContextOuterClass.Uuid getEndpointUuid() { + if (endpointUuidBuilder_ == null) { + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; + } else { + return endpointUuidBuilder_.getMessage(); + } + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) { + if (endpointUuidBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endpointUuid_ = value; + } else { + endpointUuidBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { + if (endpointUuidBuilder_ == null) { + endpointUuid_ = builderForValue.build(); + } else { + endpointUuidBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) { + if (endpointUuidBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) { + getEndpointUuidBuilder().mergeFrom(value); + } else { + endpointUuid_ = value; + } } else { - opticalLinkUuid_ = null; - opticalLinkUuidBuilder_ = null; + endpointUuidBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * .context.Uuid endpoint_uuid = 3; + */ + public Builder clearEndpointUuid() { + bitField0_ = (bitField0_ & ~0x00000002); + endpointUuid_ = null; + if (endpointUuidBuilder_ != null) { + endpointUuidBuilder_.dispose(); + endpointUuidBuilder_ = null; } + onChanged(); return this; } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - public context.ContextOuterClass.Uuid.Builder getOpticalLinkUuidBuilder() { + public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() { + bitField0_ |= 0x00000002; onChanged(); - return getOpticalLinkUuidFieldBuilder().getBuilder(); + return getEndpointUuidFieldBuilder().getBuilder(); } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() { - if (opticalLinkUuidBuilder_ != null) { - return opticalLinkUuidBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() { + if (endpointUuidBuilder_ != null) { + return endpointUuidBuilder_.getMessageOrBuilder(); } else { - return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_; + return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_; } } /** - * .context.Uuid optical_link_uuid = 1; + * .context.Uuid endpoint_uuid = 3; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalLinkUuidFieldBuilder() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalLinkUuid(), getParentForChildren(), isClean()); - opticalLinkUuid_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getEndpointUuidFieldBuilder() { + if (endpointUuidBuilder_ == null) { + endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getEndpointUuid(), getParentForChildren(), isClean()); + endpointUuid_ = null; } - return opticalLinkUuidBuilder_; + return endpointUuidBuilder_; } @java.lang.Override @@ -74681,174 +75721,157 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLinkId) + // @@protoc_insertion_point(builder_scope:context.OpticalEndPointId) } - // @@protoc_insertion_point(class_scope:context.OpticalLinkId) - private static final context.ContextOuterClass.OpticalLinkId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalEndPointId) + private static final context.ContextOuterClass.OpticalEndPointId DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalEndPointId(); } - public static context.ContextOuterClass.OpticalLinkId getDefaultInstance() { + public static context.ContextOuterClass.OpticalEndPointId getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalLinkId(input, extensionRegistry); + public OpticalEndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface FiberIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.FiberId) + public interface OpticalLinkListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkList) com.google.protobuf.MessageOrBuilder { /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; + */ + java.util.List getOpticalLinksList(); + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + context.ContextOuterClass.OpticalLink getOpticalLinks(int index); + + /** + * repeated .context.OpticalLink optical_links = 1; */ - boolean hasFiberUuid(); + int getOpticalLinksCount(); /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ - context.ContextOuterClass.Uuid getFiberUuid(); + java.util.List getOpticalLinksOrBuilderList(); /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder(); + context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index); } /** - * Protobuf type {@code context.FiberId} + * Protobuf type {@code context.OpticalLinkList} */ - public static final class FiberId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.FiberId) - FiberIdOrBuilder { + public static final class OpticalLinkList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkList) + OpticalLinkListOrBuilder { private static final long serialVersionUID = 0L; - // Use FiberId.newBuilder() to construct. - private FiberId(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLinkList.newBuilder() to construct. + private OpticalLinkList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private FiberId() { + private OpticalLinkList() { + opticalLinks_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new FiberId(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private FiberId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - context.ContextOuterClass.Uuid.Builder subBuilder = null; - if (fiberUuid_ != null) { - subBuilder = fiberUuid_.toBuilder(); - } - fiberUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(fiberUuid_); - fiberUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new OpticalLinkList(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class); } - public static final int FIBER_UUID_FIELD_NUMBER = 1; + public static final int OPTICAL_LINKS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List opticalLinks_; - private context.ContextOuterClass.Uuid fiberUuid_; + /** + * repeated .context.OpticalLink optical_links = 1; + */ + @java.lang.Override + public java.util.List getOpticalLinksList() { + return opticalLinks_; + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + @java.lang.Override + public java.util.List getOpticalLinksOrBuilderList() { + return opticalLinks_; + } /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public boolean hasFiberUuid() { - return fiberUuid_ != null; + public int getOpticalLinksCount() { + return opticalLinks_.size(); } /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public context.ContextOuterClass.Uuid getFiberUuid() { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + return opticalLinks_.get(index); } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ @java.lang.Override - public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() { - return getFiberUuid(); + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + return opticalLinks_.get(index); } private byte memoizedIsInitialized = -1; @@ -74866,10 +75889,10 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (fiberUuid_ != null) { - output.writeMessage(1, getFiberUuid()); + for (int i = 0; i < opticalLinks_.size(); i++) { + output.writeMessage(1, opticalLinks_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -74878,10 +75901,10 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (fiberUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getFiberUuid()); + for (int i = 0; i < opticalLinks_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalLinks_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -74891,17 +75914,13 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.FiberId)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLinkList)) { return super.equals(obj); } - context.ContextOuterClass.FiberId other = (context.ContextOuterClass.FiberId) obj; - if (hasFiberUuid() != other.hasFiberUuid()) + context.ContextOuterClass.OpticalLinkList other = (context.ContextOuterClass.OpticalLinkList) obj; + if (!getOpticalLinksList().equals(other.getOpticalLinksList())) return false; - if (hasFiberUuid()) { - if (!getFiberUuid().equals(other.getFiberUuid())) - return false; - } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -74913,60 +75932,60 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasFiberUuid()) { - hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER; - hash = (53 * hash) + getFiberUuid().hashCode(); + if (getOpticalLinksCount() > 0) { + hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalLinksList().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.FiberId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -74979,7 +75998,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.FiberId prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLinkList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -74995,60 +76014,55 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.FiberId} + * Protobuf type {@code context.OpticalLinkList} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.FiberId) - context.ContextOuterClass.FiberIdOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkList) + context.ContextOuterClass.OpticalLinkListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class); } - // Construct using context.ContextOuterClass.FiberId.newBuilder() + // Construct using context.ContextOuterClass.OpticalLinkList.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (fiberUuidBuilder_ == null) { - fiberUuid_ = null; + bitField0_ = 0; + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); } else { - fiberUuid_ = null; - fiberUuidBuilder_ = null; + opticalLinks_ = null; + opticalLinksBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000001); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_FiberId_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor; } @java.lang.Override - public context.ContextOuterClass.FiberId getDefaultInstanceForType() { - return context.ContextOuterClass.FiberId.getDefaultInstance(); + public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLinkList.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.FiberId build() { - context.ContextOuterClass.FiberId result = buildPartial(); + public context.ContextOuterClass.OpticalLinkList build() { + context.ContextOuterClass.OpticalLinkList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -75056,201 +76070,362 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.FiberId buildPartial() { - context.ContextOuterClass.FiberId result = new context.ContextOuterClass.FiberId(this); - if (fiberUuidBuilder_ == null) { - result.fiberUuid_ = fiberUuid_; + public context.ContextOuterClass.OpticalLinkList buildPartial() { + context.ContextOuterClass.OpticalLinkList result = new context.ContextOuterClass.OpticalLinkList(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLinkList result) { + if (opticalLinksBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.opticalLinks_ = opticalLinks_; + } else { + result.opticalLinks_ = opticalLinksBuilder_.build(); + } + } + + private void buildPartial0(context.ContextOuterClass.OpticalLinkList result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof context.ContextOuterClass.OpticalLinkList) { + return mergeFrom((context.ContextOuterClass.OpticalLinkList) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(context.ContextOuterClass.OpticalLinkList other) { + if (other == context.ContextOuterClass.OpticalLinkList.getDefaultInstance()) + return this; + if (opticalLinksBuilder_ == null) { + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinks_.isEmpty()) { + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOpticalLinksIsMutable(); + opticalLinks_.addAll(other.opticalLinks_); + } + onChanged(); + } } else { - result.fiberUuid_ = fiberUuidBuilder_.build(); + if (!other.opticalLinks_.isEmpty()) { + if (opticalLinksBuilder_.isEmpty()) { + opticalLinksBuilder_.dispose(); + opticalLinksBuilder_ = null; + opticalLinks_ = other.opticalLinks_; + bitField0_ = (bitField0_ & ~0x00000001); + opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null; + } else { + opticalLinksBuilder_.addAllMessages(other.opticalLinks_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry); + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(m); + } else { + opticalLinksBuilder_.addMessage(m); + } + break; + } + // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); } - onBuilt(); - return result; + // finally + return this; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } + private int bitField0_; - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } + private java.util.List opticalLinks_ = java.util.Collections.emptyList(); - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); + private void ensureOpticalLinksIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + opticalLinks_ = new java.util.ArrayList(opticalLinks_); + bitField0_ |= 0x00000001; + } } - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } + private com.google.protobuf.RepeatedFieldBuilderV3 opticalLinksBuilder_; - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public java.util.List getOpticalLinksList() { + if (opticalLinksBuilder_ == null) { + return java.util.Collections.unmodifiableList(opticalLinks_); + } else { + return opticalLinksBuilder_.getMessageList(); + } } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public int getOpticalLinksCount() { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.size(); + } else { + return opticalLinksBuilder_.getCount(); + } } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.FiberId) { - return mergeFrom((context.ContextOuterClass.FiberId) other); + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); } else { - super.mergeFrom(other); - return this; + return opticalLinksBuilder_.getMessage(index); } } - public Builder mergeFrom(context.ContextOuterClass.FiberId other) { - if (other == context.ContextOuterClass.FiberId.getDefaultInstance()) - return this; - if (other.hasFiberUuid()) { - mergeFiberUuid(other.getFiberUuid()); + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, value); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, value); } - this.mergeUnknownFields(other.unknownFields); - onChanged(); return this; } - @java.lang.Override - public final boolean isInitialized() { - return true; + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.set(index, builderForValue.build()); + onChanged(); + } else { + opticalLinksBuilder_.setMessage(index, builderForValue.build()); + } + return this; } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.FiberId parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.FiberId) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(value); } return this; } - private context.ContextOuterClass.Uuid fiberUuid_; - - private com.google.protobuf.SingleFieldBuilderV3 fiberUuidBuilder_; - /** - * .context.Uuid fiber_uuid = 1; - * @return Whether the fiberUuid field is set. + * repeated .context.OpticalLink optical_links = 1; */ - public boolean hasFiberUuid() { - return fiberUuidBuilder_ != null || fiberUuid_ != null; + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) { + if (opticalLinksBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, value); + onChanged(); + } else { + opticalLinksBuilder_.addMessage(index, value); + } + return this; } /** - * .context.Uuid fiber_uuid = 1; - * @return The fiberUuid. + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.Uuid getFiberUuid() { - if (fiberUuidBuilder_ == null) { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(builderForValue.build()); + onChanged(); } else { - return fiberUuidBuilder_.getMessage(); + opticalLinksBuilder_.addMessage(builderForValue.build()); } + return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder setFiberUuid(context.ContextOuterClass.Uuid value) { - if (fiberUuidBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - fiberUuid_ = value; + public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.add(index, builderForValue.build()); onChanged(); } else { - fiberUuidBuilder_.setMessage(value); + opticalLinksBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder setFiberUuid(context.ContextOuterClass.Uuid.Builder builderForValue) { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = builderForValue.build(); + public Builder addAllOpticalLinks(java.lang.Iterable values) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_); onChanged(); } else { - fiberUuidBuilder_.setMessage(builderForValue.build()); + opticalLinksBuilder_.addAllMessages(values); } return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder mergeFiberUuid(context.ContextOuterClass.Uuid value) { - if (fiberUuidBuilder_ == null) { - if (fiberUuid_ != null) { - fiberUuid_ = context.ContextOuterClass.Uuid.newBuilder(fiberUuid_).mergeFrom(value).buildPartial(); - } else { - fiberUuid_ = value; - } + public Builder clearOpticalLinks() { + if (opticalLinksBuilder_ == null) { + opticalLinks_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { - fiberUuidBuilder_.mergeFrom(value); + opticalLinksBuilder_.clear(); } return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public Builder clearFiberUuid() { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = null; + public Builder removeOpticalLinks(int index) { + if (opticalLinksBuilder_ == null) { + ensureOpticalLinksIsMutable(); + opticalLinks_.remove(index); onChanged(); } else { - fiberUuid_ = null; - fiberUuidBuilder_ = null; + opticalLinksBuilder_.remove(index); } return this; } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.Uuid.Builder getFiberUuidBuilder() { - onChanged(); - return getFiberUuidFieldBuilder().getBuilder(); + public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().getBuilder(index); } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() { - if (fiberUuidBuilder_ != null) { - return fiberUuidBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) { + if (opticalLinksBuilder_ == null) { + return opticalLinks_.get(index); } else { - return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_; + return opticalLinksBuilder_.getMessageOrBuilder(index); } } /** - * .context.Uuid fiber_uuid = 1; + * repeated .context.OpticalLink optical_links = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getFiberUuidFieldBuilder() { - if (fiberUuidBuilder_ == null) { - fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getFiberUuid(), getParentForChildren(), isClean()); - fiberUuid_ = null; + public java.util.List getOpticalLinksOrBuilderList() { + if (opticalLinksBuilder_ != null) { + return opticalLinksBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(opticalLinks_); + } + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() { + return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) { + return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance()); + } + + /** + * repeated .context.OpticalLink optical_links = 1; + */ + public java.util.List getOpticalLinksBuilderList() { + return getOpticalLinksFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3 getOpticalLinksFieldBuilder() { + if (opticalLinksBuilder_ == null) { + opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(opticalLinks_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + opticalLinks_ = null; } - return fiberUuidBuilder_; + return opticalLinksBuilder_; } @java.lang.Override @@ -75262,448 +76437,280 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.FiberId) + // @@protoc_insertion_point(builder_scope:context.OpticalLinkList) } - // @@protoc_insertion_point(class_scope:context.FiberId) - private static final context.ContextOuterClass.FiberId DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLinkList) + private static final context.ContextOuterClass.OpticalLinkList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.FiberId(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkList(); } - public static context.ContextOuterClass.FiberId getDefaultInstance() { + public static context.ContextOuterClass.OpticalLinkList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public FiberId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new FiberId(input, extensionRegistry); + public OpticalLinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.FiberId getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface FiberOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Fiber) + public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails) com.google.protobuf.MessageOrBuilder { /** - * string ID = 10; - * @return The iD. - */ - java.lang.String getID(); - - /** - * string ID = 10; - * @return The bytes for iD. + * float length = 1; + * @return The length. */ - com.google.protobuf.ByteString getIDBytes(); + float getLength(); /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ java.lang.String getSrcPort(); /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ com.google.protobuf.ByteString getSrcPortBytes(); /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ java.lang.String getDstPort(); /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ com.google.protobuf.ByteString getDstPortBytes(); /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ java.lang.String getLocalPeerPort(); /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ com.google.protobuf.ByteString getLocalPeerPortBytes(); /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ java.lang.String getRemotePeerPort(); /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ com.google.protobuf.ByteString getRemotePeerPortBytes(); /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. + * bool used = 6; + * @return The used. */ - java.util.List getCSlotsList(); + boolean getUsed(); /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. + * map<string, int32> c_slots = 7; */ int getCSlotsCount(); /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * map<string, int32> c_slots = 7; + */ + boolean containsCSlots(java.lang.String key); + + /** + * Use {@link #getCSlotsMap()} instead. */ - int getCSlots(int index); + @java.lang.Deprecated + java.util.Map getCSlots(); + + /** + * map<string, int32> c_slots = 7; + */ + java.util.Map getCSlotsMap(); /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * map<string, int32> c_slots = 7; */ - java.util.List getLSlotsList(); + int getCSlotsOrDefault(java.lang.String key, int defaultValue); /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> c_slots = 7; + */ + int getCSlotsOrThrow(java.lang.String key); + + /** + * map<string, int32> l_slots = 8; */ int getLSlotsCount(); /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> l_slots = 8; */ - int getLSlots(int index); + boolean containsLSlots(java.lang.String key); /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. + * Use {@link #getLSlotsMap()} instead. */ - java.util.List getSSlotsList(); + @java.lang.Deprecated + java.util.Map getLSlots(); /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. + * map<string, int32> l_slots = 8; */ - int getSSlotsCount(); + java.util.Map getLSlotsMap(); /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. + * map<string, int32> l_slots = 8; */ - int getSSlots(int index); + int getLSlotsOrDefault(java.lang.String key, int defaultValue); /** - * float length = 8; - * @return The length. + * map<string, int32> l_slots = 8; */ - float getLength(); + int getLSlotsOrThrow(java.lang.String key); /** - * bool used = 9; - * @return The used. + * map<string, int32> s_slots = 9; */ - boolean getUsed(); + int getSSlotsCount(); /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ - boolean hasFiberUuid(); + boolean containsSSlots(java.lang.String key); /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * Use {@link #getSSlotsMap()} instead. */ - context.ContextOuterClass.FiberId getFiberUuid(); + @java.lang.Deprecated + java.util.Map getSSlots(); + + /** + * map<string, int32> s_slots = 9; + */ + java.util.Map getSSlotsMap(); /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder(); + int getSSlotsOrDefault(java.lang.String key, int defaultValue); + + /** + * map<string, int32> s_slots = 9; + */ + int getSSlotsOrThrow(java.lang.String key); } /** - * Protobuf type {@code context.Fiber} + * Protobuf type {@code context.OpticalLinkDetails} */ - public static final class Fiber extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Fiber) - FiberOrBuilder { + public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails) + OpticalLinkDetailsOrBuilder { private static final long serialVersionUID = 0L; - // Use Fiber.newBuilder() to construct. - private Fiber(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLinkDetails.newBuilder() to construct. + private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private Fiber() { - iD_ = ""; + private OpticalLinkDetails() { srcPort_ = ""; dstPort_ = ""; localPeerPort_ = ""; remotePeerPort_ = ""; - cSlots_ = emptyIntList(); - lSlots_ = emptyIntList(); - sSlots_ = emptyIntList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new Fiber(); + return new OpticalLinkDetails(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; } - private Fiber(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - srcPort_ = s; - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - dstPort_ = s; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - localPeerPort_ = s; - break; - } - case 34: - { - java.lang.String s = input.readStringRequireUtf8(); - remotePeerPort_ = s; - break; - } - case 40: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - cSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000001; - } - cSlots_.addInt(input.readInt32()); - break; - } - case 42: - { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) { - cSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000001; - } - while (input.getBytesUntilLimit() > 0) { - cSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); - break; - } - case 48: - { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - lSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000002; - } - lSlots_.addInt(input.readInt32()); - break; - } - case 50: - { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) { - lSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000002; - } - while (input.getBytesUntilLimit() > 0) { - lSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); - break; - } - case 56: - { - if (!((mutable_bitField0_ & 0x00000004) != 0)) { - sSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000004; - } - sSlots_.addInt(input.readInt32()); - break; - } - case 58: - { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) { - sSlots_ = newIntList(); - mutable_bitField0_ |= 0x00000004; - } - while (input.getBytesUntilLimit() > 0) { - sSlots_.addInt(input.readInt32()); - } - input.popLimit(limit); - break; - } - case 69: - { - length_ = input.readFloat(); - break; - } - case 72: - { - used_ = input.readBool(); - break; - } - case 82: - { - java.lang.String s = input.readStringRequireUtf8(); - iD_ = s; - break; - } - case 90: - { - context.ContextOuterClass.FiberId.Builder subBuilder = null; - if (fiberUuid_ != null) { - subBuilder = fiberUuid_.toBuilder(); - } - fiberUuid_ = input.readMessage(context.ContextOuterClass.FiberId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(fiberUuid_); - fiberUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - // C - cSlots_.makeImmutable(); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - // C - lSlots_.makeImmutable(); - } - if (((mutable_bitField0_ & 0x00000004) != 0)) { - // C - sSlots_.makeImmutable(); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); + @SuppressWarnings({ "rawtypes" }) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch(number) { + case 7: + return internalGetCSlots(); + case 8: + return internalGetLSlots(); + case 9: + return internalGetSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); } } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; - } - @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); } - public static final int ID_FIELD_NUMBER = 10; - - private volatile java.lang.Object iD_; + public static final int LENGTH_FIELD_NUMBER = 1; - /** - * string ID = 10; - * @return The iD. - */ - @java.lang.Override - public java.lang.String getID() { - java.lang.Object ref = iD_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - iD_ = s; - return s; - } - } + private float length_ = 0F; /** - * string ID = 10; - * @return The bytes for iD. + * float length = 1; + * @return The length. */ @java.lang.Override - public com.google.protobuf.ByteString getIDBytes() { - java.lang.Object ref = iD_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - iD_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public float getLength() { + return length_; } - public static final int SRC_PORT_FIELD_NUMBER = 1; + public static final int SRC_PORT_FIELD_NUMBER = 2; - private volatile java.lang.Object srcPort_; + @SuppressWarnings("serial") + private volatile java.lang.Object srcPort_ = ""; /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ @java.lang.Override @@ -75720,7 +76727,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ @java.lang.Override @@ -75735,12 +76742,13 @@ public final class ContextOuterClass { } } - public static final int DST_PORT_FIELD_NUMBER = 2; + public static final int DST_PORT_FIELD_NUMBER = 3; - private volatile java.lang.Object dstPort_; + @SuppressWarnings("serial") + private volatile java.lang.Object dstPort_ = ""; /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ @java.lang.Override @@ -75757,7 +76765,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ @java.lang.Override @@ -75772,12 +76780,13 @@ public final class ContextOuterClass { } } - public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 3; + public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 4; - private volatile java.lang.Object localPeerPort_; + @SuppressWarnings("serial") + private volatile java.lang.Object localPeerPort_ = ""; /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ @java.lang.Override @@ -75794,7 +76803,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ @java.lang.Override @@ -75809,12 +76818,13 @@ public final class ContextOuterClass { } } - public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 4; + public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 5; - private volatile java.lang.Object remotePeerPort_; + @SuppressWarnings("serial") + private volatile java.lang.Object remotePeerPort_ = ""; /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ @java.lang.Override @@ -75831,7 +76841,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ @java.lang.Override @@ -75846,156 +76856,245 @@ public final class ContextOuterClass { } } - public static final int C_SLOTS_FIELD_NUMBER = 5; + public static final int USED_FIELD_NUMBER = 6; - private com.google.protobuf.Internal.IntList cSlots_; + private boolean used_ = false; /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. + * bool used = 6; + * @return The used. */ @java.lang.Override - public java.util.List getCSlotsList() { + public boolean getUsed() { + return used_; + } + + public static final int C_SLOTS_FIELD_NUMBER = 7; + + private static final class CSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); + } + + @SuppressWarnings("serial") + private com.google.protobuf.MapField cSlots_; + + private com.google.protobuf.MapField internalGetCSlots() { + if (cSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry); + } return cSlots_; } - /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. - */ public int getCSlotsCount() { - return cSlots_.size(); + return internalGetCSlots().getMap().size(); } /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getCSlots(int index) { - return cSlots_.getInt(index); + @java.lang.Override + public boolean containsCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetCSlots().getMap().containsKey(key); } - private int cSlotsMemoizedSerializedSize = -1; - - public static final int L_SLOTS_FIELD_NUMBER = 6; - - private com.google.protobuf.Internal.IntList lSlots_; + /** + * Use {@link #getCSlotsMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCSlots() { + return getCSlotsMap(); + } /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * map<string, int32> c_slots = 7; */ @java.lang.Override - public java.util.List getLSlotsList() { - return lSlots_; + public java.util.Map getCSlotsMap() { + return internalGetCSlots().getMap(); } /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> c_slots = 7; */ - public int getLSlotsCount() { - return lSlots_.size(); + @java.lang.Override + public int getCSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getLSlots(int index) { - return lSlots_.getInt(index); + @java.lang.Override + public int getCSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public static final int L_SLOTS_FIELD_NUMBER = 8; + + private static final class LSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); } - private int lSlotsMemoizedSerializedSize = -1; + @SuppressWarnings("serial") + private com.google.protobuf.MapField lSlots_; - public static final int S_SLOTS_FIELD_NUMBER = 7; + private com.google.protobuf.MapField internalGetLSlots() { + if (lSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry); + } + return lSlots_; + } - private com.google.protobuf.Internal.IntList sSlots_; + public int getLSlotsCount() { + return internalGetLSlots().getMap().size(); + } /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. + * map<string, int32> l_slots = 8; */ @java.lang.Override - public java.util.List getSSlotsList() { - return sSlots_; + public boolean containsLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetLSlots().getMap().containsKey(key); } /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. + * Use {@link #getLSlotsMap()} instead. */ - public int getSSlotsCount() { - return sSlots_.size(); + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getLSlots() { + return getLSlotsMap(); } /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. + * map<string, int32> l_slots = 8; */ - public int getSSlots(int index) { - return sSlots_.getInt(index); + @java.lang.Override + public java.util.Map getLSlotsMap() { + return internalGetLSlots().getMap(); } - private int sSlotsMemoizedSerializedSize = -1; - - public static final int LENGTH_FIELD_NUMBER = 8; - - private float length_; + /** + * map<string, int32> l_slots = 8; + */ + @java.lang.Override + public int getLSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } /** - * float length = 8; - * @return The length. + * map<string, int32> l_slots = 8; */ @java.lang.Override - public float getLength() { - return length_; + public int getLSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public static final int S_SLOTS_FIELD_NUMBER = 9; + + private static final class SSlotsDefaultEntryHolder { + + static final com.google.protobuf.MapEntry defaultEntry = com.google.protobuf.MapEntry.newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0); } - public static final int USED_FIELD_NUMBER = 9; + @SuppressWarnings("serial") + private com.google.protobuf.MapField sSlots_; + + private com.google.protobuf.MapField internalGetSSlots() { + if (sSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + return sSlots_; + } - private boolean used_; + public int getSSlotsCount() { + return internalGetSSlots().getMap().size(); + } /** - * bool used = 9; - * @return The used. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public boolean getUsed() { - return used_; + public boolean containsSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetSSlots().getMap().containsKey(key); } - public static final int FIBER_UUID_FIELD_NUMBER = 11; - - private context.ContextOuterClass.FiberId fiberUuid_; + /** + * Use {@link #getSSlotsMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getSSlots() { + return getSSlotsMap(); + } /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public boolean hasFiberUuid() { - return fiberUuid_ != null; + public java.util.Map getSSlotsMap() { + return internalGetSSlots().getMap(); } /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * map<string, int32> s_slots = 9; */ @java.lang.Override - public context.ContextOuterClass.FiberId getFiberUuid() { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; + public int getSSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetSSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ @java.lang.Override - public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() { - return getFiberUuid(); + public int getSSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetSSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); } private byte memoizedIsInitialized = -1; @@ -76013,53 +77112,28 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - getSerializedSize(); - if (!getSrcPortBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcPort_); - } - if (!getDstPortBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstPort_); - } - if (!getLocalPeerPortBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, localPeerPort_); - } - if (!getRemotePeerPortBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remotePeerPort_); - } - if (getCSlotsList().size() > 0) { - output.writeUInt32NoTag(42); - output.writeUInt32NoTag(cSlotsMemoizedSerializedSize); - } - for (int i = 0; i < cSlots_.size(); i++) { - output.writeInt32NoTag(cSlots_.getInt(i)); - } - if (getLSlotsList().size() > 0) { - output.writeUInt32NoTag(50); - output.writeUInt32NoTag(lSlotsMemoizedSerializedSize); + if (java.lang.Float.floatToRawIntBits(length_) != 0) { + output.writeFloat(1, length_); } - for (int i = 0; i < lSlots_.size(); i++) { - output.writeInt32NoTag(lSlots_.getInt(i)); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, srcPort_); } - if (getSSlotsList().size() > 0) { - output.writeUInt32NoTag(58); - output.writeUInt32NoTag(sSlotsMemoizedSerializedSize); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dstPort_); } - for (int i = 0; i < sSlots_.size(); i++) { - output.writeInt32NoTag(sSlots_.getInt(i)); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, localPeerPort_); } - if (length_ != 0F) { - output.writeFloat(8, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, remotePeerPort_); } if (used_ != false) { - output.writeBool(9, used_); - } - if (!getIDBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 10, iD_); + output.writeBool(6, used_); } - if (fiberUuid_ != null) { - output.writeMessage(11, getFiberUuid()); - } - unknownFields.writeTo(output); + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetCSlots(), CSlotsDefaultEntryHolder.defaultEntry, 7); + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetLSlots(), LSlotsDefaultEntryHolder.defaultEntry, 8); + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetSSlots(), SSlotsDefaultEntryHolder.defaultEntry, 9); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -76068,67 +77142,37 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!getSrcPortBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcPort_); - } - if (!getDstPortBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstPort_); - } - if (!getLocalPeerPortBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, localPeerPort_); - } - if (!getRemotePeerPortBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remotePeerPort_); + if (java.lang.Float.floatToRawIntBits(length_) != 0) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_); } - { - int dataSize = 0; - for (int i = 0; i < cSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(cSlots_.getInt(i)); - } - size += dataSize; - if (!getCSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - cSlotsMemoizedSerializedSize = dataSize; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, srcPort_); } - { - int dataSize = 0; - for (int i = 0; i < lSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(lSlots_.getInt(i)); - } - size += dataSize; - if (!getLSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - lSlotsMemoizedSerializedSize = dataSize; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, dstPort_); } - { - int dataSize = 0; - for (int i = 0; i < sSlots_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(sSlots_.getInt(i)); - } - size += dataSize; - if (!getSSlotsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); - } - sSlotsMemoizedSerializedSize = dataSize; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, localPeerPort_); } - if (length_ != 0F) { - size += com.google.protobuf.CodedOutputStream.computeFloatSize(8, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, remotePeerPort_); } if (used_ != false) { - size += com.google.protobuf.CodedOutputStream.computeBoolSize(9, used_); + size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, used_); + } + for (java.util.Map.Entry entry : internalGetCSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry cSlots__ = CSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, cSlots__); } - if (!getIDBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, iD_); + for (java.util.Map.Entry entry : internalGetLSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry lSlots__ = LSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, lSlots__); } - if (fiberUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getFiberUuid()); + for (java.util.Map.Entry entry : internalGetSSlots().getMap().entrySet()) { + com.google.protobuf.MapEntry sSlots__ = SSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, sSlots__); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -76138,11 +77182,11 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.Fiber)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) { return super.equals(obj); } - context.ContextOuterClass.Fiber other = (context.ContextOuterClass.Fiber) obj; - if (!getID().equals(other.getID())) + context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj; + if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) return false; if (!getSrcPort().equals(other.getSrcPort())) return false; @@ -76152,23 +77196,15 @@ public final class ContextOuterClass { return false; if (!getRemotePeerPort().equals(other.getRemotePeerPort())) return false; - if (!getCSlotsList().equals(other.getCSlotsList())) - return false; - if (!getLSlotsList().equals(other.getLSlotsList())) - return false; - if (!getSSlotsList().equals(other.getSSlotsList())) + if (getUsed() != other.getUsed()) return false; - if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) + if (!internalGetCSlots().equals(other.internalGetCSlots())) return false; - if (getUsed() != other.getUsed()) + if (!internalGetLSlots().equals(other.internalGetLSlots())) return false; - if (hasFiberUuid() != other.hasFiberUuid()) + if (!internalGetSSlots().equals(other.internalGetSSlots())) return false; - if (hasFiberUuid()) { - if (!getFiberUuid().equals(other.getFiberUuid())) - return false; - } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -76180,8 +77216,8 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + ID_FIELD_NUMBER; - hash = (53 * hash) + getID().hashCode(); + hash = (37 * hash) + LENGTH_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); hash = (37 * hash) + SRC_PORT_FIELD_NUMBER; hash = (53 * hash) + getSrcPort().hashCode(); hash = (37 * hash) + DST_PORT_FIELD_NUMBER; @@ -76190,76 +77226,70 @@ public final class ContextOuterClass { hash = (53 * hash) + getLocalPeerPort().hashCode(); hash = (37 * hash) + REMOTE_PEER_PORT_FIELD_NUMBER; hash = (53 * hash) + getRemotePeerPort().hashCode(); - if (getCSlotsCount() > 0) { + hash = (37 * hash) + USED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed()); + if (!internalGetCSlots().getMap().isEmpty()) { hash = (37 * hash) + C_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getCSlotsList().hashCode(); + hash = (53 * hash) + internalGetCSlots().hashCode(); } - if (getLSlotsCount() > 0) { + if (!internalGetLSlots().getMap().isEmpty()) { hash = (37 * hash) + L_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getLSlotsList().hashCode(); + hash = (53 * hash) + internalGetLSlots().hashCode(); } - if (getSSlotsCount() > 0) { + if (!internalGetSSlots().getMap().isEmpty()) { hash = (37 * hash) + S_SLOTS_FIELD_NUMBER; - hash = (53 * hash) + getSSlotsList().hashCode(); + hash = (53 * hash) + internalGetSSlots().hashCode(); } - hash = (37 * hash) + LENGTH_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); - hash = (37 * hash) + USED_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed()); - if (hasFiberUuid()) { - hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER; - hash = (53 * hash) + getFiberUuid().hashCode(); - } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.Fiber parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -76272,7 +77302,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.Fiber prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -76288,73 +77318,85 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.Fiber} + * Protobuf type {@code context.OpticalLinkDetails} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.Fiber) - context.ContextOuterClass.FiberOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails) + context.ContextOuterClass.OpticalLinkDetailsOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + } + + @SuppressWarnings({ "rawtypes" }) + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch(number) { + case 7: + return internalGetCSlots(); + case 8: + return internalGetLSlots(); + case 9: + return internalGetSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @SuppressWarnings({ "rawtypes" }) + protected com.google.protobuf.MapField internalGetMutableMapField(int number) { + switch(number) { + case 7: + return internalGetMutableCSlots(); + case 8: + return internalGetMutableLSlots(); + case 9: + return internalGetMutableSSlots(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); } - // Construct using context.ContextOuterClass.Fiber.newBuilder() + // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - iD_ = ""; + bitField0_ = 0; + length_ = 0F; srcPort_ = ""; dstPort_ = ""; localPeerPort_ = ""; remotePeerPort_ = ""; - cSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000001); - lSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000002); - sSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000004); - length_ = 0F; used_ = false; - if (fiberUuidBuilder_ == null) { - fiberUuid_ = null; - } else { - fiberUuid_ = null; - fiberUuidBuilder_ = null; - } + internalGetMutableCSlots().clear(); + internalGetMutableLSlots().clear(); + internalGetMutableSSlots().clear(); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_Fiber_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; } @java.lang.Override - public context.ContextOuterClass.Fiber getDefaultInstanceForType() { - return context.ContextOuterClass.Fiber.getDefaultInstance(); + public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.Fiber build() { - context.ContextOuterClass.Fiber result = buildPartial(); + public context.ContextOuterClass.OpticalLinkDetails build() { + context.ContextOuterClass.OpticalLinkDetails result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -76362,143 +77404,95 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.Fiber buildPartial() { - context.ContextOuterClass.Fiber result = new context.ContextOuterClass.Fiber(this); - int from_bitField0_ = bitField0_; - result.iD_ = iD_; - result.srcPort_ = srcPort_; - result.dstPort_ = dstPort_; - result.localPeerPort_ = localPeerPort_; - result.remotePeerPort_ = remotePeerPort_; - if (((bitField0_ & 0x00000001) != 0)) { - cSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.cSlots_ = cSlots_; - if (((bitField0_ & 0x00000002) != 0)) { - lSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.lSlots_ = lSlots_; - if (((bitField0_ & 0x00000004) != 0)) { - sSlots_.makeImmutable(); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.sSlots_ = sSlots_; - result.length_ = length_; - result.used_ = used_; - if (fiberUuidBuilder_ == null) { - result.fiberUuid_ = fiberUuid_; - } else { - result.fiberUuid_ = fiberUuidBuilder_.build(); + public context.ContextOuterClass.OpticalLinkDetails buildPartial() { + context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalLinkDetails result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.length_ = length_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.srcPort_ = srcPort_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.dstPort_ = dstPort_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.localPeerPort_ = localPeerPort_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.remotePeerPort_ = remotePeerPort_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.used_ = used_; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.cSlots_ = internalGetCSlots(); + result.cSlots_.makeImmutable(); + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.lSlots_ = internalGetLSlots(); + result.lSlots_.makeImmutable(); + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.sSlots_ = internalGetSSlots(); + result.sSlots_.makeImmutable(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.Fiber) { - return mergeFrom((context.ContextOuterClass.Fiber) other); + if (other instanceof context.ContextOuterClass.OpticalLinkDetails) { + return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.Fiber other) { - if (other == context.ContextOuterClass.Fiber.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) { + if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) return this; - if (!other.getID().isEmpty()) { - iD_ = other.iD_; - onChanged(); + if (other.getLength() != 0F) { + setLength(other.getLength()); } if (!other.getSrcPort().isEmpty()) { srcPort_ = other.srcPort_; + bitField0_ |= 0x00000002; onChanged(); } if (!other.getDstPort().isEmpty()) { dstPort_ = other.dstPort_; + bitField0_ |= 0x00000004; onChanged(); } if (!other.getLocalPeerPort().isEmpty()) { localPeerPort_ = other.localPeerPort_; + bitField0_ |= 0x00000008; onChanged(); } if (!other.getRemotePeerPort().isEmpty()) { remotePeerPort_ = other.remotePeerPort_; + bitField0_ |= 0x00000010; onChanged(); } - if (!other.cSlots_.isEmpty()) { - if (cSlots_.isEmpty()) { - cSlots_ = other.cSlots_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureCSlotsIsMutable(); - cSlots_.addAll(other.cSlots_); - } - onChanged(); - } - if (!other.lSlots_.isEmpty()) { - if (lSlots_.isEmpty()) { - lSlots_ = other.lSlots_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureLSlotsIsMutable(); - lSlots_.addAll(other.lSlots_); - } - onChanged(); - } - if (!other.sSlots_.isEmpty()) { - if (sSlots_.isEmpty()) { - sSlots_ = other.sSlots_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureSSlotsIsMutable(); - sSlots_.addAll(other.sSlots_); - } - onChanged(); - } - if (other.getLength() != 0F) { - setLength(other.getLength()); - } if (other.getUsed() != false) { setUsed(other.getUsed()); } - if (other.hasFiberUuid()) { - mergeFiberUuid(other.getFiberUuid()); - } - this.mergeUnknownFields(other.unknownFields); + internalGetMutableCSlots().mergeFrom(other.internalGetCSlots()); + bitField0_ |= 0x00000040; + internalGetMutableLSlots().mergeFrom(other.internalGetLSlots()); + bitField0_ |= 0x00000080; + internalGetMutableSSlots().mergeFrom(other.internalGetSSlots()); + bitField0_ |= 0x00000100; + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -76510,90 +77504,136 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.Fiber parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 13: + { + length_ = input.readFloat(); + bitField0_ |= 0x00000001; + break; + } + // case 13 + case 18: + { + srcPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + dstPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + localPeerPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } + // case 34 + case 42: + { + remotePeerPort_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } + // case 42 + case 48: + { + used_ = input.readBool(); + bitField0_ |= 0x00000020; + break; + } + // case 48 + case 58: + { + com.google.protobuf.MapEntry cSlots__ = input.readMessage(CSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableCSlots().getMutableMap().put(cSlots__.getKey(), cSlots__.getValue()); + bitField0_ |= 0x00000040; + break; + } + // case 58 + case 66: + { + com.google.protobuf.MapEntry lSlots__ = input.readMessage(LSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableLSlots().getMutableMap().put(lSlots__.getKey(), lSlots__.getValue()); + bitField0_ |= 0x00000080; + break; + } + // case 66 + case 74: + { + com.google.protobuf.MapEntry sSlots__ = input.readMessage(SSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + internalGetMutableSSlots().getMutableMap().put(sSlots__.getKey(), sSlots__.getValue()); + bitField0_ |= 0x00000100; + break; + } + // case 74 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.Fiber) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } private int bitField0_; - private java.lang.Object iD_ = ""; - - /** - * string ID = 10; - * @return The iD. - */ - public java.lang.String getID() { - java.lang.Object ref = iD_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - iD_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - - /** - * string ID = 10; - * @return The bytes for iD. - */ - public com.google.protobuf.ByteString getIDBytes() { - java.lang.Object ref = iD_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - iD_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } + private float length_; /** - * string ID = 10; - * @param value The iD to set. - * @return This builder for chaining. + * float length = 1; + * @return The length. */ - public Builder setID(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - iD_ = value; - onChanged(); - return this; + @java.lang.Override + public float getLength() { + return length_; } /** - * string ID = 10; + * float length = 1; + * @param value The length to set. * @return This builder for chaining. */ - public Builder clearID() { - iD_ = getDefaultInstance().getID(); + public Builder setLength(float value) { + length_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } /** - * string ID = 10; - * @param value The bytes for iD to set. + * float length = 1; * @return This builder for chaining. */ - public Builder setIDBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - iD_ = value; + public Builder clearLength() { + bitField0_ = (bitField0_ & ~0x00000001); + length_ = 0F; onChanged(); return this; } @@ -76601,7 +77641,7 @@ public final class ContextOuterClass { private java.lang.Object srcPort_ = ""; /** - * string src_port = 1; + * string src_port = 2; * @return The srcPort. */ public java.lang.String getSrcPort() { @@ -76617,7 +77657,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @return The bytes for srcPort. */ public com.google.protobuf.ByteString getSrcPortBytes() { @@ -76632,7 +77672,7 @@ public final class ContextOuterClass { } /** - * string src_port = 1; + * string src_port = 2; * @param value The srcPort to set. * @return This builder for chaining. */ @@ -76641,22 +77681,24 @@ public final class ContextOuterClass { throw new NullPointerException(); } srcPort_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * string src_port = 1; + * string src_port = 2; * @return This builder for chaining. */ public Builder clearSrcPort() { srcPort_ = getDefaultInstance().getSrcPort(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } /** - * string src_port = 1; + * string src_port = 2; * @param value The bytes for srcPort to set. * @return This builder for chaining. */ @@ -76666,6 +77708,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); srcPort_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -76673,7 +77716,7 @@ public final class ContextOuterClass { private java.lang.Object dstPort_ = ""; /** - * string dst_port = 2; + * string dst_port = 3; * @return The dstPort. */ public java.lang.String getDstPort() { @@ -76689,7 +77732,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @return The bytes for dstPort. */ public com.google.protobuf.ByteString getDstPortBytes() { @@ -76704,7 +77747,7 @@ public final class ContextOuterClass { } /** - * string dst_port = 2; + * string dst_port = 3; * @param value The dstPort to set. * @return This builder for chaining. */ @@ -76713,22 +77756,24 @@ public final class ContextOuterClass { throw new NullPointerException(); } dstPort_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string dst_port = 2; + * string dst_port = 3; * @return This builder for chaining. */ public Builder clearDstPort() { dstPort_ = getDefaultInstance().getDstPort(); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); return this; } /** - * string dst_port = 2; + * string dst_port = 3; * @param value The bytes for dstPort to set. * @return This builder for chaining. */ @@ -76738,6 +77783,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); dstPort_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -76745,7 +77791,7 @@ public final class ContextOuterClass { private java.lang.Object localPeerPort_ = ""; /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The localPeerPort. */ public java.lang.String getLocalPeerPort() { @@ -76761,7 +77807,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return The bytes for localPeerPort. */ public com.google.protobuf.ByteString getLocalPeerPortBytes() { @@ -76776,7 +77822,7 @@ public final class ContextOuterClass { } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @param value The localPeerPort to set. * @return This builder for chaining. */ @@ -76785,22 +77831,24 @@ public final class ContextOuterClass { throw new NullPointerException(); } localPeerPort_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @return This builder for chaining. */ public Builder clearLocalPeerPort() { localPeerPort_ = getDefaultInstance().getLocalPeerPort(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); return this; } /** - * string local_peer_port = 3; + * string local_peer_port = 4; * @param value The bytes for localPeerPort to set. * @return This builder for chaining. */ @@ -76810,6 +77858,7 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); localPeerPort_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -76817,7 +77866,7 @@ public final class ContextOuterClass { private java.lang.Object remotePeerPort_ = ""; /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The remotePeerPort. */ public java.lang.String getRemotePeerPort() { @@ -76833,7 +77882,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return The bytes for remotePeerPort. */ public com.google.protobuf.ByteString getRemotePeerPortBytes() { @@ -76848,7 +77897,7 @@ public final class ContextOuterClass { } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @param value The remotePeerPort to set. * @return This builder for chaining. */ @@ -76857,22 +77906,24 @@ public final class ContextOuterClass { throw new NullPointerException(); } remotePeerPort_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @return This builder for chaining. */ public Builder clearRemotePeerPort() { remotePeerPort_ = getDefaultInstance().getRemotePeerPort(); + bitField0_ = (bitField0_ & ~0x00000010); onChanged(); return this; } /** - * string remote_peer_port = 4; + * string remote_peer_port = 5; * @param value The bytes for remotePeerPort to set. * @return This builder for chaining. */ @@ -76882,432 +77933,424 @@ public final class ContextOuterClass { } checkByteStringIsUtf8(value); remotePeerPort_ = value; + bitField0_ |= 0x00000010; onChanged(); return this; } - private com.google.protobuf.Internal.IntList cSlots_ = emptyIntList(); - - private void ensureCSlotsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - cSlots_ = mutableCopy(cSlots_); - bitField0_ |= 0x00000001; - } - } - - /** - * repeated int32 c_slots = 5; - * @return A list containing the cSlots. - */ - public java.util.List getCSlotsList() { - return ((bitField0_ & 0x00000001) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_; - } - - /** - * repeated int32 c_slots = 5; - * @return The count of cSlots. - */ - public int getCSlotsCount() { - return cSlots_.size(); - } + private boolean used_; /** - * repeated int32 c_slots = 5; - * @param index The index of the element to return. - * @return The cSlots at the given index. + * bool used = 6; + * @return The used. */ - public int getCSlots(int index) { - return cSlots_.getInt(index); + @java.lang.Override + public boolean getUsed() { + return used_; } /** - * repeated int32 c_slots = 5; - * @param index The index to set the value at. - * @param value The cSlots to set. + * bool used = 6; + * @param value The used to set. * @return This builder for chaining. */ - public Builder setCSlots(int index, int value) { - ensureCSlotsIsMutable(); - cSlots_.setInt(index, value); + public Builder setUsed(boolean value) { + used_ = value; + bitField0_ |= 0x00000020; onChanged(); return this; } /** - * repeated int32 c_slots = 5; - * @param value The cSlots to add. + * bool used = 6; * @return This builder for chaining. */ - public Builder addCSlots(int value) { - ensureCSlotsIsMutable(); - cSlots_.addInt(value); + public Builder clearUsed() { + bitField0_ = (bitField0_ & ~0x00000020); + used_ = false; onChanged(); return this; } - /** - * repeated int32 c_slots = 5; - * @param values The cSlots to add. - * @return This builder for chaining. - */ - public Builder addAllCSlots(java.lang.Iterable values) { - ensureCSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, cSlots_); - onChanged(); - return this; + private com.google.protobuf.MapField cSlots_; + + private com.google.protobuf.MapField internalGetCSlots() { + if (cSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry); + } + return cSlots_; } - /** - * repeated int32 c_slots = 5; - * @return This builder for chaining. - */ - public Builder clearCSlots() { - cSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000001); + private com.google.protobuf.MapField internalGetMutableCSlots() { + if (cSlots_ == null) { + cSlots_ = com.google.protobuf.MapField.newMapField(CSlotsDefaultEntryHolder.defaultEntry); + } + if (!cSlots_.isMutable()) { + cSlots_ = cSlots_.copy(); + } + bitField0_ |= 0x00000040; onChanged(); - return this; + return cSlots_; } - private com.google.protobuf.Internal.IntList lSlots_ = emptyIntList(); + public int getCSlotsCount() { + return internalGetCSlots().getMap().size(); + } - private void ensureLSlotsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { - lSlots_ = mutableCopy(lSlots_); - bitField0_ |= 0x00000002; + /** + * map<string, int32> c_slots = 7; + */ + @java.lang.Override + public boolean containsCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); } + return internalGetCSlots().getMap().containsKey(key); } /** - * repeated int32 l_slots = 6; - * @return A list containing the lSlots. + * Use {@link #getCSlotsMap()} instead. */ - public java.util.List getLSlotsList() { - return ((bitField0_ & 0x00000002) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_; + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCSlots() { + return getCSlotsMap(); } /** - * repeated int32 l_slots = 6; - * @return The count of lSlots. + * map<string, int32> c_slots = 7; */ - public int getLSlotsCount() { - return lSlots_.size(); + @java.lang.Override + public java.util.Map getCSlotsMap() { + return internalGetCSlots().getMap(); } /** - * repeated int32 l_slots = 6; - * @param index The index of the element to return. - * @return The lSlots at the given index. + * map<string, int32> c_slots = 7; */ - public int getLSlots(int index) { - return lSlots_.getInt(index); + @java.lang.Override + public int getCSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * repeated int32 l_slots = 6; - * @param index The index to set the value at. - * @param value The lSlots to set. - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder setLSlots(int index, int value) { - ensureLSlotsIsMutable(); - lSlots_.setInt(index, value); - onChanged(); + @java.lang.Override + public int getCSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetCSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearCSlots() { + bitField0_ = (bitField0_ & ~0x00000040); + internalGetMutableCSlots().getMutableMap().clear(); return this; } /** - * repeated int32 l_slots = 6; - * @param value The lSlots to add. - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder addLSlots(int value) { - ensureLSlotsIsMutable(); - lSlots_.addInt(value); - onChanged(); + public Builder removeCSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableCSlots().getMutableMap().remove(key); return this; } /** - * repeated int32 l_slots = 6; - * @param values The lSlots to add. - * @return This builder for chaining. + * Use alternate mutation accessors instead. */ - public Builder addAllLSlots(java.lang.Iterable values) { - ensureLSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, lSlots_); - onChanged(); + @java.lang.Deprecated + public java.util.Map getMutableCSlots() { + bitField0_ |= 0x00000040; + return internalGetMutableCSlots().getMutableMap(); + } + + /** + * map<string, int32> c_slots = 7; + */ + public Builder putCSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableCSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000040; return this; } /** - * repeated int32 l_slots = 6; - * @return This builder for chaining. + * map<string, int32> c_slots = 7; */ - public Builder clearLSlots() { - lSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000002); - onChanged(); + public Builder putAllCSlots(java.util.Map values) { + internalGetMutableCSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000040; return this; } - private com.google.protobuf.Internal.IntList sSlots_ = emptyIntList(); + private com.google.protobuf.MapField lSlots_; - private void ensureSSlotsIsMutable() { - if (!((bitField0_ & 0x00000004) != 0)) { - sSlots_ = mutableCopy(sSlots_); - bitField0_ |= 0x00000004; + private com.google.protobuf.MapField internalGetLSlots() { + if (lSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry); } + return lSlots_; } - /** - * repeated int32 s_slots = 7; - * @return A list containing the sSlots. - */ - public java.util.List getSSlotsList() { - return ((bitField0_ & 0x00000004) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_; + private com.google.protobuf.MapField internalGetMutableLSlots() { + if (lSlots_ == null) { + lSlots_ = com.google.protobuf.MapField.newMapField(LSlotsDefaultEntryHolder.defaultEntry); + } + if (!lSlots_.isMutable()) { + lSlots_ = lSlots_.copy(); + } + bitField0_ |= 0x00000080; + onChanged(); + return lSlots_; + } + + public int getLSlotsCount() { + return internalGetLSlots().getMap().size(); } /** - * repeated int32 s_slots = 7; - * @return The count of sSlots. + * map<string, int32> l_slots = 8; */ - public int getSSlotsCount() { - return sSlots_.size(); + @java.lang.Override + public boolean containsLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetLSlots().getMap().containsKey(key); } /** - * repeated int32 s_slots = 7; - * @param index The index of the element to return. - * @return The sSlots at the given index. + * Use {@link #getLSlotsMap()} instead. */ - public int getSSlots(int index) { - return sSlots_.getInt(index); + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getLSlots() { + return getLSlotsMap(); } /** - * repeated int32 s_slots = 7; - * @param index The index to set the value at. - * @param value The sSlots to set. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder setSSlots(int index, int value) { - ensureSSlotsIsMutable(); - sSlots_.setInt(index, value); - onChanged(); - return this; + @java.lang.Override + public java.util.Map getLSlotsMap() { + return internalGetLSlots().getMap(); } /** - * repeated int32 s_slots = 7; - * @param value The sSlots to add. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder addSSlots(int value) { - ensureSSlotsIsMutable(); - sSlots_.addInt(value); - onChanged(); - return this; + @java.lang.Override + public int getLSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * repeated int32 s_slots = 7; - * @param values The sSlots to add. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder addAllSSlots(java.lang.Iterable values) { - ensureSSlotsIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sSlots_); - onChanged(); + @java.lang.Override + public int getLSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetLSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearLSlots() { + bitField0_ = (bitField0_ & ~0x00000080); + internalGetMutableLSlots().getMutableMap().clear(); return this; } /** - * repeated int32 s_slots = 7; - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder clearSSlots() { - sSlots_ = emptyIntList(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); + public Builder removeLSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableLSlots().getMutableMap().remove(key); return this; } - private float length_; - /** - * float length = 8; - * @return The length. + * Use alternate mutation accessors instead. */ - @java.lang.Override - public float getLength() { - return length_; + @java.lang.Deprecated + public java.util.Map getMutableLSlots() { + bitField0_ |= 0x00000080; + return internalGetMutableLSlots().getMutableMap(); } /** - * float length = 8; - * @param value The length to set. - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder setLength(float value) { - length_ = value; - onChanged(); + public Builder putLSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableLSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000080; return this; } /** - * float length = 8; - * @return This builder for chaining. + * map<string, int32> l_slots = 8; */ - public Builder clearLength() { - length_ = 0F; - onChanged(); + public Builder putAllLSlots(java.util.Map values) { + internalGetMutableLSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000080; return this; } - private boolean used_; + private com.google.protobuf.MapField sSlots_; - /** - * bool used = 9; - * @return The used. - */ - @java.lang.Override - public boolean getUsed() { - return used_; + private com.google.protobuf.MapField internalGetSSlots() { + if (sSlots_ == null) { + return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + return sSlots_; } - /** - * bool used = 9; - * @param value The used to set. - * @return This builder for chaining. - */ - public Builder setUsed(boolean value) { - used_ = value; + private com.google.protobuf.MapField internalGetMutableSSlots() { + if (sSlots_ == null) { + sSlots_ = com.google.protobuf.MapField.newMapField(SSlotsDefaultEntryHolder.defaultEntry); + } + if (!sSlots_.isMutable()) { + sSlots_ = sSlots_.copy(); + } + bitField0_ |= 0x00000100; onChanged(); - return this; + return sSlots_; } - /** - * bool used = 9; - * @return This builder for chaining. - */ - public Builder clearUsed() { - used_ = false; - onChanged(); - return this; + public int getSSlotsCount() { + return internalGetSSlots().getMap().size(); } - private context.ContextOuterClass.FiberId fiberUuid_; - - private com.google.protobuf.SingleFieldBuilderV3 fiberUuidBuilder_; - /** - * .context.FiberId fiber_uuid = 11; - * @return Whether the fiberUuid field is set. + * map<string, int32> s_slots = 9; */ - public boolean hasFiberUuid() { - return fiberUuidBuilder_ != null || fiberUuid_ != null; + @java.lang.Override + public boolean containsSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetSSlots().getMap().containsKey(key); } /** - * .context.FiberId fiber_uuid = 11; - * @return The fiberUuid. + * Use {@link #getSSlotsMap()} instead. */ - public context.ContextOuterClass.FiberId getFiberUuid() { - if (fiberUuidBuilder_ == null) { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; - } else { - return fiberUuidBuilder_.getMessage(); - } + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getSSlots() { + return getSSlotsMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder setFiberUuid(context.ContextOuterClass.FiberId value) { - if (fiberUuidBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - fiberUuid_ = value; - onChanged(); - } else { - fiberUuidBuilder_.setMessage(value); - } - return this; + @java.lang.Override + public java.util.Map getSSlotsMap() { + return internalGetSSlots().getMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder setFiberUuid(context.ContextOuterClass.FiberId.Builder builderForValue) { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = builderForValue.build(); - onChanged(); - } else { - fiberUuidBuilder_.setMessage(builderForValue.build()); + @java.lang.Override + public int getSSlotsOrDefault(java.lang.String key, int defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); } - return this; + java.util.Map map = internalGetSSlots().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder mergeFiberUuid(context.ContextOuterClass.FiberId value) { - if (fiberUuidBuilder_ == null) { - if (fiberUuid_ != null) { - fiberUuid_ = context.ContextOuterClass.FiberId.newBuilder(fiberUuid_).mergeFrom(value).buildPartial(); - } else { - fiberUuid_ = value; - } - onChanged(); - } else { - fiberUuidBuilder_.mergeFrom(value); + @java.lang.Override + public int getSSlotsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = internalGetSSlots().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); } + return map.get(key); + } + + public Builder clearSSlots() { + bitField0_ = (bitField0_ & ~0x00000100); + internalGetMutableSSlots().getMutableMap().clear(); return this; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public Builder clearFiberUuid() { - if (fiberUuidBuilder_ == null) { - fiberUuid_ = null; - onChanged(); - } else { - fiberUuid_ = null; - fiberUuidBuilder_ = null; + public Builder removeSSlots(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); } + internalGetMutableSSlots().getMutableMap().remove(key); return this; } /** - * .context.FiberId fiber_uuid = 11; + * Use alternate mutation accessors instead. */ - public context.ContextOuterClass.FiberId.Builder getFiberUuidBuilder() { - onChanged(); - return getFiberUuidFieldBuilder().getBuilder(); + @java.lang.Deprecated + public java.util.Map getMutableSSlots() { + bitField0_ |= 0x00000100; + return internalGetMutableSSlots().getMutableMap(); } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() { - if (fiberUuidBuilder_ != null) { - return fiberUuidBuilder_.getMessageOrBuilder(); - } else { - return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_; + public Builder putSSlots(java.lang.String key, int value) { + if (key == null) { + throw new NullPointerException("map key"); } + internalGetMutableSSlots().getMutableMap().put(key, value); + bitField0_ |= 0x00000100; + return this; } /** - * .context.FiberId fiber_uuid = 11; + * map<string, int32> s_slots = 9; */ - private com.google.protobuf.SingleFieldBuilderV3 getFiberUuidFieldBuilder() { - if (fiberUuidBuilder_ == null) { - fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getFiberUuid(), getParentForChildren(), isClean()); - fiberUuid_ = null; - } - return fiberUuidBuilder_; + public Builder putAllSSlots(java.util.Map values) { + internalGetMutableSSlots().getMutableMap().putAll(values); + bitField0_ |= 0x00000100; + return this; } @java.lang.Override @@ -77319,333 +78362,302 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.Fiber) + // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails) } - // @@protoc_insertion_point(class_scope:context.Fiber) - private static final context.ContextOuterClass.Fiber DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails) + private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.Fiber(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails(); } - public static context.ContextOuterClass.Fiber getDefaultInstance() { + public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public Fiber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Fiber(input, extensionRegistry); + public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.Fiber getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails) + public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink) com.google.protobuf.MessageOrBuilder { /** - * float length = 1; - * @return The length. + * string name = 1; + * @return The name. */ - float getLength(); + java.lang.String getName(); + + /** + * string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. + */ + boolean hasOpticalDetails(); + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. + */ + context.ContextOuterClass.OpticalLinkDetails getOpticalDetails(); /** - * string source = 2; - * @return The source. + * .context.OpticalLinkDetails optical_details = 2; */ - java.lang.String getSource(); + context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder(); /** - * string source = 2; - * @return The bytes for source. + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. */ - com.google.protobuf.ByteString getSourceBytes(); + boolean hasLinkId(); /** - * string target = 3; - * @return The target. + * .context.LinkId link_id = 3; + * @return The linkId. */ - java.lang.String getTarget(); + context.ContextOuterClass.LinkId getLinkId(); /** - * string target = 3; - * @return The bytes for target. + * .context.LinkId link_id = 3; */ - com.google.protobuf.ByteString getTargetBytes(); + context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - java.util.List getFibersList(); + java.util.List getLinkEndpointIdsList(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - context.ContextOuterClass.Fiber getFibers(int index); + context.ContextOuterClass.EndPointId getLinkEndpointIds(int index); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - int getFibersCount(); + int getLinkEndpointIdsCount(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - java.util.List getFibersOrBuilderList(); + java.util.List getLinkEndpointIdsOrBuilderList(); /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index); + context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index); } /** - * Protobuf type {@code context.OpticalLinkDetails} + * Protobuf type {@code context.OpticalLink} */ - public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails) - OpticalLinkDetailsOrBuilder { + public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink) + OpticalLinkOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLinkDetails.newBuilder() to construct. - private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use OpticalLink.newBuilder() to construct. + private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLinkDetails() { - source_ = ""; - target_ = ""; - fibers_ = java.util.Collections.emptyList(); + private OpticalLink() { + name_ = ""; + linkEndpointIds_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLinkDetails(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private OpticalLinkDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 13: - { - length_ = input.readFloat(); - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - source_ = s; - break; - } - case 26: - { - java.lang.String s = input.readStringRequireUtf8(); - target_ = s; - break; - } - case 34: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - fibers_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - fibers_.add(input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry)); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - fibers_ = java.util.Collections.unmodifiableList(fibers_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new OpticalLink(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); - } - - public static final int LENGTH_FIELD_NUMBER = 1; - - private float length_; - - /** - * float length = 1; - * @return The length. - */ - @java.lang.Override - public float getLength() { - return length_; + return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); } - public static final int SOURCE_FIELD_NUMBER = 2; + public static final int NAME_FIELD_NUMBER = 1; - private volatile java.lang.Object source_; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; /** - * string source = 2; - * @return The source. + * string name = 1; + * @return The name. */ @java.lang.Override - public java.lang.String getSource() { - java.lang.Object ref = source_; + public java.lang.String getName() { + java.lang.Object ref = name_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - source_ = s; + name_ = s; return s; } } /** - * string source = 2; - * @return The bytes for source. + * string name = 1; + * @return The bytes for name. */ @java.lang.Override - public com.google.protobuf.ByteString getSourceBytes() { - java.lang.Object ref = source_; + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - source_ = b; + name_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - public static final int TARGET_FIELD_NUMBER = 3; + public static final int OPTICAL_DETAILS_FIELD_NUMBER = 2; - private volatile java.lang.Object target_; + private context.ContextOuterClass.OpticalLinkDetails opticalDetails_; /** - * string target = 3; - * @return The target. + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. */ @java.lang.Override - public java.lang.String getTarget() { - java.lang.Object ref = target_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - target_ = s; - return s; - } + public boolean hasOpticalDetails() { + return opticalDetails_ != null; } /** - * string target = 3; - * @return The bytes for target. + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. */ @java.lang.Override - public com.google.protobuf.ByteString getTargetBytes() { - java.lang.Object ref = target_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - target_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + @java.lang.Override + public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; + } + + public static final int LINK_ID_FIELD_NUMBER = 3; + + private context.ContextOuterClass.LinkId linkId_; + + /** + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. + */ + @java.lang.Override + public boolean hasLinkId() { + return linkId_ != null; + } + + /** + * .context.LinkId link_id = 3; + * @return The linkId. + */ + @java.lang.Override + public context.ContextOuterClass.LinkId getLinkId() { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; } - public static final int FIBERS_FIELD_NUMBER = 4; + /** + * .context.LinkId link_id = 3; + */ + @java.lang.Override + public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; + } - private java.util.List fibers_; + public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 4; + + @SuppressWarnings("serial") + private java.util.List linkEndpointIds_; /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public java.util.List getFibersList() { - return fibers_; + public java.util.List getLinkEndpointIdsList() { + return linkEndpointIds_; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public java.util.List getFibersOrBuilderList() { - return fibers_; + public java.util.List getLinkEndpointIdsOrBuilderList() { + return linkEndpointIds_; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public int getFibersCount() { - return fibers_.size(); + public int getLinkEndpointIdsCount() { + return linkEndpointIds_.size(); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public context.ContextOuterClass.Fiber getFibers(int index) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) { + return linkEndpointIds_.get(index); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ @java.lang.Override - public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) { + return linkEndpointIds_.get(index); } private byte memoizedIsInitialized = -1; @@ -77663,19 +78675,19 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (length_ != 0F) { - output.writeFloat(1, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } - if (!getSourceBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, source_); + if (opticalDetails_ != null) { + output.writeMessage(2, getOpticalDetails()); } - if (!getTargetBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_); + if (linkId_ != null) { + output.writeMessage(3, getLinkId()); } - for (int i = 0; i < fibers_.size(); i++) { - output.writeMessage(4, fibers_.get(i)); + for (int i = 0; i < linkEndpointIds_.size(); i++) { + output.writeMessage(4, linkEndpointIds_.get(i)); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -77684,19 +78696,19 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (length_ != 0F) { - size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); } - if (!getSourceBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, source_); + if (opticalDetails_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalDetails()); } - if (!getTargetBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_); + if (linkId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getLinkId()); } - for (int i = 0; i < fibers_.size(); i++) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, fibers_.get(i)); + for (int i = 0; i < linkEndpointIds_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkEndpointIds_.get(i)); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -77706,19 +78718,27 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) { + if (!(obj instanceof context.ContextOuterClass.OpticalLink)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj; - if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength())) + context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj; + if (!getName().equals(other.getName())) return false; - if (!getSource().equals(other.getSource())) + if (hasOpticalDetails() != other.hasOpticalDetails()) return false; - if (!getTarget().equals(other.getTarget())) + if (hasOpticalDetails()) { + if (!getOpticalDetails().equals(other.getOpticalDetails())) + return false; + } + if (hasLinkId() != other.hasLinkId()) return false; - if (!getFibersList().equals(other.getFibersList())) + if (hasLinkId()) { + if (!getLinkId().equals(other.getLinkId())) + return false; + } + if (!getLinkEndpointIdsList().equals(other.getLinkEndpointIdsList())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -77730,66 +78750,70 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + LENGTH_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength()); - hash = (37 * hash) + SOURCE_FIELD_NUMBER; - hash = (53 * hash) + getSource().hashCode(); - hash = (37 * hash) + TARGET_FIELD_NUMBER; - hash = (53 * hash) + getTarget().hashCode(); - if (getFibersCount() > 0) { - hash = (37 * hash) + FIBERS_FIELD_NUMBER; - hash = (53 * hash) + getFibersList().hashCode(); - } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasOpticalDetails()) { + hash = (37 * hash) + OPTICAL_DETAILS_FIELD_NUMBER; + hash = (53 * hash) + getOpticalDetails().hashCode(); + } + if (hasLinkId()) { + hash = (37 * hash) + LINK_ID_FIELD_NUMBER; + hash = (53 * hash) + getLinkId().hashCode(); + } + if (getLinkEndpointIdsCount() > 0) { + hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER; + hash = (53 * hash) + getLinkEndpointIdsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -77802,7 +78826,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) { + public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -77818,64 +78842,66 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLinkDetails} + * Protobuf type {@code context.OpticalLink} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails) - context.ContextOuterClass.OpticalLinkDetailsOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLink) + context.ContextOuterClass.OpticalLinkOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class); + return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder() + // Construct using context.ContextOuterClass.OpticalLink.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getFibersFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - length_ = 0F; - source_ = ""; - target_ = ""; - if (fibersBuilder_ == null) { - fibers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = 0; + name_ = ""; + opticalDetails_ = null; + if (opticalDetailsBuilder_ != null) { + opticalDetailsBuilder_.dispose(); + opticalDetailsBuilder_ = null; + } + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); + linkIdBuilder_ = null; + } + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIds_ = java.util.Collections.emptyList(); } else { - fibersBuilder_.clear(); + linkEndpointIds_ = null; + linkEndpointIdsBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000008); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor; + return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance(); + public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { + return context.ContextOuterClass.OpticalLink.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails build() { - context.ContextOuterClass.OpticalLinkDetails result = buildPartial(); + public context.ContextOuterClass.OpticalLink build() { + context.ContextOuterClass.OpticalLink result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -77883,104 +78909,90 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails buildPartial() { - context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this); - int from_bitField0_ = bitField0_; - result.length_ = length_; - result.source_ = source_; - result.target_ = target_; - if (fibersBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - fibers_ = java.util.Collections.unmodifiableList(fibers_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.fibers_ = fibers_; - } else { - result.fibers_ = fibersBuilder_.build(); + public context.ContextOuterClass.OpticalLink buildPartial() { + context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); + private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLink result) { + if (linkEndpointIdsBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.linkEndpointIds_ = linkEndpointIds_; + } else { + result.linkEndpointIds_ = linkEndpointIdsBuilder_.build(); + } } - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.OpticalLink result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.opticalDetails_ = opticalDetailsBuilder_ == null ? opticalDetails_ : opticalDetailsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLinkDetails) { - return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other); + if (other instanceof context.ContextOuterClass.OpticalLink) { + return mergeFrom((context.ContextOuterClass.OpticalLink) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) { - if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) { + if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance()) return this; - if (other.getLength() != 0F) { - setLength(other.getLength()); - } - if (!other.getSource().isEmpty()) { - source_ = other.source_; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; onChanged(); } - if (!other.getTarget().isEmpty()) { - target_ = other.target_; - onChanged(); + if (other.hasOpticalDetails()) { + mergeOpticalDetails(other.getOpticalDetails()); } - if (fibersBuilder_ == null) { - if (!other.fibers_.isEmpty()) { - if (fibers_.isEmpty()) { - fibers_ = other.fibers_; - bitField0_ = (bitField0_ & ~0x00000001); + if (other.hasLinkId()) { + mergeLinkId(other.getLinkId()); + } + if (linkEndpointIdsBuilder_ == null) { + if (!other.linkEndpointIds_.isEmpty()) { + if (linkEndpointIds_.isEmpty()) { + linkEndpointIds_ = other.linkEndpointIds_; + bitField0_ = (bitField0_ & ~0x00000008); } else { - ensureFibersIsMutable(); - fibers_.addAll(other.fibers_); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.addAll(other.linkEndpointIds_); } onChanged(); } } else { - if (!other.fibers_.isEmpty()) { - if (fibersBuilder_.isEmpty()) { - fibersBuilder_.dispose(); - fibersBuilder_ = null; - fibers_ = other.fibers_; - bitField0_ = (bitField0_ & ~0x00000001); - fibersBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFibersFieldBuilder() : null; + if (!other.linkEndpointIds_.isEmpty()) { + if (linkEndpointIdsBuilder_.isEmpty()) { + linkEndpointIdsBuilder_.dispose(); + linkEndpointIdsBuilder_ = null; + linkEndpointIds_ = other.linkEndpointIds_; + bitField0_ = (bitField0_ & ~0x00000008); + linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null; } else { - fibersBuilder_.addAllMessages(other.fibers_); + linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_); } } } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -77992,433 +79004,619 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalLinkDetails parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getOpticalDetailsFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } + // case 26 + case 34: + { + context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry); + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(m); + } else { + linkEndpointIdsBuilder_.addMessage(m); + } + break; + } + // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalLinkDetails) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } private int bitField0_; - private float length_; + private java.lang.Object name_ = ""; /** - * float length = 1; - * @return The length. + * string name = 1; + * @return The name. */ - @java.lang.Override - public float getLength() { - return length_; + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } } /** - * float length = 1; - * @param value The length to set. + * string name = 1; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * string name = 1; + * @param value The name to set. * @return This builder for chaining. */ - public Builder setLength(float value) { - length_ = value; + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } /** - * float length = 1; + * string name = 1; * @return This builder for chaining. */ - public Builder clearLength() { - length_ = 0F; + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * string name = 1; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; onChanged(); return this; } - private java.lang.Object source_ = ""; + private context.ContextOuterClass.OpticalLinkDetails opticalDetails_; + + private com.google.protobuf.SingleFieldBuilderV3 opticalDetailsBuilder_; /** - * string source = 2; - * @return The source. + * .context.OpticalLinkDetails optical_details = 2; + * @return Whether the opticalDetails field is set. */ - public java.lang.String getSource() { - java.lang.Object ref = source_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - source_ = s; - return s; + public boolean hasOpticalDetails() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * .context.OpticalLinkDetails optical_details = 2; + * @return The opticalDetails. + */ + public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() { + if (opticalDetailsBuilder_ == null) { + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; } else { - return (java.lang.String) ref; + return opticalDetailsBuilder_.getMessage(); } } /** - * string source = 2; - * @return The bytes for source. + * .context.OpticalLinkDetails optical_details = 2; */ - public com.google.protobuf.ByteString getSourceBytes() { - java.lang.Object ref = source_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - source_ = b; - return b; + public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) { + if (opticalDetailsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + opticalDetails_ = value; } else { - return (com.google.protobuf.ByteString) ref; + opticalDetailsBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); + return this; } /** - * string source = 2; - * @param value The source to set. - * @return This builder for chaining. + * .context.OpticalLinkDetails optical_details = 2; */ - public Builder setSource(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); + public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) { + if (opticalDetailsBuilder_ == null) { + opticalDetails_ = builderForValue.build(); + } else { + opticalDetailsBuilder_.setMessage(builderForValue.build()); } - source_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * string source = 2; - * @return This builder for chaining. + * .context.OpticalLinkDetails optical_details = 2; */ - public Builder clearSource() { - source_ = getDefaultInstance().getSource(); + public Builder mergeOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) { + if (opticalDetailsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && opticalDetails_ != null && opticalDetails_ != context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) { + getOpticalDetailsBuilder().mergeFrom(value); + } else { + opticalDetails_ = value; + } + } else { + opticalDetailsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; onChanged(); return this; } /** - * string source = 2; - * @param value The bytes for source to set. - * @return This builder for chaining. + * .context.OpticalLinkDetails optical_details = 2; */ - public Builder setSourceBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public Builder clearOpticalDetails() { + bitField0_ = (bitField0_ & ~0x00000002); + opticalDetails_ = null; + if (opticalDetailsBuilder_ != null) { + opticalDetailsBuilder_.dispose(); + opticalDetailsBuilder_ = null; } - checkByteStringIsUtf8(value); - source_ = value; onChanged(); return this; } - private java.lang.Object target_ = ""; + /** + * .context.OpticalLinkDetails optical_details = 2; + */ + public context.ContextOuterClass.OpticalLinkDetails.Builder getOpticalDetailsBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getOpticalDetailsFieldBuilder().getBuilder(); + } /** - * string target = 3; - * @return The target. + * .context.OpticalLinkDetails optical_details = 2; */ - public java.lang.String getTarget() { - java.lang.Object ref = target_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - target_ = s; - return s; + public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() { + if (opticalDetailsBuilder_ != null) { + return opticalDetailsBuilder_.getMessageOrBuilder(); } else { - return (java.lang.String) ref; + return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_; } } /** - * string target = 3; - * @return The bytes for target. + * .context.OpticalLinkDetails optical_details = 2; */ - public com.google.protobuf.ByteString getTargetBytes() { - java.lang.Object ref = target_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - target_ = b; - return b; + private com.google.protobuf.SingleFieldBuilderV3 getOpticalDetailsFieldBuilder() { + if (opticalDetailsBuilder_ == null) { + opticalDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalDetails(), getParentForChildren(), isClean()); + opticalDetails_ = null; + } + return opticalDetailsBuilder_; + } + + private context.ContextOuterClass.LinkId linkId_; + + private com.google.protobuf.SingleFieldBuilderV3 linkIdBuilder_; + + /** + * .context.LinkId link_id = 3; + * @return Whether the linkId field is set. + */ + public boolean hasLinkId() { + return ((bitField0_ & 0x00000004) != 0); + } + + /** + * .context.LinkId link_id = 3; + * @return The linkId. + */ + public context.ContextOuterClass.LinkId getLinkId() { + if (linkIdBuilder_ == null) { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; } else { - return (com.google.protobuf.ByteString) ref; + return linkIdBuilder_.getMessage(); } } /** - * string target = 3; - * @param value The target to set. - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder setTarget(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); + public Builder setLinkId(context.ContextOuterClass.LinkId value) { + if (linkIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + linkId_ = value; + } else { + linkIdBuilder_.setMessage(value); } - target_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string target = 3; - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder clearTarget() { - target_ = getDefaultInstance().getTarget(); + public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) { + if (linkIdBuilder_ == null) { + linkId_ = builderForValue.build(); + } else { + linkIdBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; onChanged(); return this; } /** - * string target = 3; - * @param value The bytes for target to set. - * @return This builder for chaining. + * .context.LinkId link_id = 3; */ - public Builder setTargetBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); + public Builder mergeLinkId(context.ContextOuterClass.LinkId value) { + if (linkIdBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) { + getLinkIdBuilder().mergeFrom(value); + } else { + linkId_ = value; + } + } else { + linkIdBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * .context.LinkId link_id = 3; + */ + public Builder clearLinkId() { + bitField0_ = (bitField0_ & ~0x00000004); + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); + linkIdBuilder_ = null; } - checkByteStringIsUtf8(value); - target_ = value; onChanged(); return this; } - private java.util.List fibers_ = java.util.Collections.emptyList(); + /** + * .context.LinkId link_id = 3; + */ + public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getLinkIdFieldBuilder().getBuilder(); + } - private void ensureFibersIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - fibers_ = new java.util.ArrayList(fibers_); - bitField0_ |= 0x00000001; + /** + * .context.LinkId link_id = 3; + */ + public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { + if (linkIdBuilder_ != null) { + return linkIdBuilder_.getMessageOrBuilder(); + } else { + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; + } + } + + /** + * .context.LinkId link_id = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3 getLinkIdFieldBuilder() { + if (linkIdBuilder_ == null) { + linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getLinkId(), getParentForChildren(), isClean()); + linkId_ = null; + } + return linkIdBuilder_; + } + + private java.util.List linkEndpointIds_ = java.util.Collections.emptyList(); + + private void ensureLinkEndpointIdsIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + linkEndpointIds_ = new java.util.ArrayList(linkEndpointIds_); + bitField0_ |= 0x00000008; } } - private com.google.protobuf.RepeatedFieldBuilderV3 fibersBuilder_; + private com.google.protobuf.RepeatedFieldBuilderV3 linkEndpointIdsBuilder_; /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersList() { - if (fibersBuilder_ == null) { - return java.util.Collections.unmodifiableList(fibers_); + public java.util.List getLinkEndpointIdsList() { + if (linkEndpointIdsBuilder_ == null) { + return java.util.Collections.unmodifiableList(linkEndpointIds_); } else { - return fibersBuilder_.getMessageList(); + return linkEndpointIdsBuilder_.getMessageList(); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public int getFibersCount() { - if (fibersBuilder_ == null) { - return fibers_.size(); + public int getLinkEndpointIdsCount() { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.size(); } else { - return fibersBuilder_.getCount(); + return linkEndpointIdsBuilder_.getCount(); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber getFibers(int index) { - if (fibersBuilder_ == null) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.get(index); } else { - return fibersBuilder_.getMessage(index); + return linkEndpointIdsBuilder_.getMessage(index); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder setFibers(int index, context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.set(index, value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.set(index, value); onChanged(); } else { - fibersBuilder_.setMessage(index, value); + linkEndpointIdsBuilder_.setMessage(index, value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder setFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.set(index, builderForValue.build()); + public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.set(index, builderForValue.build()); onChanged(); } else { - fibersBuilder_.setMessage(index, builderForValue.build()); + linkEndpointIdsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.add(value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(value); onChanged(); } else { - fibersBuilder_.addMessage(value); + linkEndpointIdsBuilder_.addMessage(value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(int index, context.ContextOuterClass.Fiber value) { - if (fibersBuilder_ == null) { + public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) { + if (linkEndpointIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureFibersIsMutable(); - fibers_.add(index, value); + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(index, value); onChanged(); } else { - fibersBuilder_.addMessage(index, value); + linkEndpointIdsBuilder_.addMessage(index, value); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.add(builderForValue.build()); + public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(builderForValue.build()); onChanged(); } else { - fibersBuilder_.addMessage(builderForValue.build()); + linkEndpointIdsBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.add(index, builderForValue.build()); + public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.add(index, builderForValue.build()); onChanged(); } else { - fibersBuilder_.addMessage(index, builderForValue.build()); + linkEndpointIdsBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder addAllFibers(java.lang.Iterable values) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fibers_); + public Builder addAllLinkEndpointIds(java.lang.Iterable values) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkEndpointIds_); onChanged(); } else { - fibersBuilder_.addAllMessages(values); + linkEndpointIdsBuilder_.addAllMessages(values); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder clearFibers() { - if (fibersBuilder_ == null) { - fibers_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + public Builder clearLinkEndpointIds() { + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); onChanged(); } else { - fibersBuilder_.clear(); + linkEndpointIdsBuilder_.clear(); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public Builder removeFibers(int index) { - if (fibersBuilder_ == null) { - ensureFibersIsMutable(); - fibers_.remove(index); + public Builder removeLinkEndpointIds(int index) { + if (linkEndpointIdsBuilder_ == null) { + ensureLinkEndpointIdsIsMutable(); + linkEndpointIds_.remove(index); onChanged(); } else { - fibersBuilder_.remove(index); + linkEndpointIdsBuilder_.remove(index); } return this; } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder getFibersBuilder(int index) { - return getFibersFieldBuilder().getBuilder(index); + public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(int index) { + return getLinkEndpointIdsFieldBuilder().getBuilder(index); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) { - if (fibersBuilder_ == null) { - return fibers_.get(index); + public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) { + if (linkEndpointIdsBuilder_ == null) { + return linkEndpointIds_.get(index); } else { - return fibersBuilder_.getMessageOrBuilder(index); + return linkEndpointIdsBuilder_.getMessageOrBuilder(index); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersOrBuilderList() { - if (fibersBuilder_ != null) { - return fibersBuilder_.getMessageOrBuilderList(); + public java.util.List getLinkEndpointIdsOrBuilderList() { + if (linkEndpointIdsBuilder_ != null) { + return linkEndpointIdsBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(fibers_); + return java.util.Collections.unmodifiableList(linkEndpointIds_); } } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder addFibersBuilder() { - return getFibersFieldBuilder().addBuilder(context.ContextOuterClass.Fiber.getDefaultInstance()); + public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() { + return getLinkEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance()); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public context.ContextOuterClass.Fiber.Builder addFibersBuilder(int index) { - return getFibersFieldBuilder().addBuilder(index, context.ContextOuterClass.Fiber.getDefaultInstance()); + public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(int index) { + return getLinkEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance()); } /** - * repeated .context.Fiber fibers = 4; + * repeated .context.EndPointId link_endpoint_ids = 4; */ - public java.util.List getFibersBuilderList() { - return getFibersFieldBuilder().getBuilderList(); + public java.util.List getLinkEndpointIdsBuilderList() { + return getLinkEndpointIdsFieldBuilder().getBuilderList(); } - private com.google.protobuf.RepeatedFieldBuilderV3 getFibersFieldBuilder() { - if (fibersBuilder_ == null) { - fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(fibers_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - fibers_ = null; + private com.google.protobuf.RepeatedFieldBuilderV3 getLinkEndpointIdsFieldBuilder() { + if (linkEndpointIdsBuilder_ == null) { + linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(linkEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean()); + linkEndpointIds_ = null; } - return fibersBuilder_; + return linkEndpointIdsBuilder_; } @java.lang.Override @@ -78430,290 +79628,180 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails) + // @@protoc_insertion_point(builder_scope:context.OpticalLink) } - // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails) - private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.OpticalLink) + private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails(); + DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink(); } - public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() { + public static context.ContextOuterClass.OpticalLink getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalLinkDetails(input, extensionRegistry); + public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() { + public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink) + public interface ServiceConfigRuleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceConfigRule) com.google.protobuf.MessageOrBuilder { /** - * string name = 1; - * @return The name. - */ - java.lang.String getName(); - - /** - * string name = 1; - * @return The bytes for name. - */ - com.google.protobuf.ByteString getNameBytes(); - - /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ - boolean hasDetails(); + boolean hasServiceId(); /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ - context.ContextOuterClass.OpticalLinkDetails getDetails(); + context.ContextOuterClass.ServiceId getServiceId(); /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder(); + context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder(); /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ - boolean hasOpticalLinkUuid(); + boolean hasConfigruleCustom(); /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ - context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid(); + context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom(); /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder(); + context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder(); } /** - * Protobuf type {@code context.OpticalLink} + * Protobuf type {@code context.ServiceConfigRule} */ - public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink) - OpticalLinkOrBuilder { + public static final class ServiceConfigRule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceConfigRule) + ServiceConfigRuleOrBuilder { private static final long serialVersionUID = 0L; - // Use OpticalLink.newBuilder() to construct. - private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use ServiceConfigRule.newBuilder() to construct. + private ServiceConfigRule(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private OpticalLink() { - name_ = ""; + private ServiceConfigRule() { } @java.lang.Override @SuppressWarnings({ "unused" }) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { - return new OpticalLink(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private OpticalLink(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - java.lang.String s = input.readStringRequireUtf8(); - name_ = s; - break; - } - case 18: - { - context.ContextOuterClass.OpticalLinkDetails.Builder subBuilder = null; - if (details_ != null) { - subBuilder = details_.toBuilder(); - } - details_ = input.readMessage(context.ContextOuterClass.OpticalLinkDetails.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(details_); - details_ = subBuilder.buildPartial(); - } - break; - } - case 26: - { - context.ContextOuterClass.OpticalLinkId.Builder subBuilder = null; - if (opticalLinkUuid_ != null) { - subBuilder = opticalLinkUuid_.toBuilder(); - } - opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.OpticalLinkId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(opticalLinkUuid_); - opticalLinkUuid_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } + return new ServiceConfigRule(); } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); - } - - public static final int NAME_FIELD_NUMBER = 1; - - private volatile java.lang.Object name_; - - /** - * string name = 1; - * @return The name. - */ - @java.lang.Override - public java.lang.String getName() { - java.lang.Object ref = name_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - name_ = s; - return s; - } - } - - /** - * string name = 1; - * @return The bytes for name. - */ - @java.lang.Override - public com.google.protobuf.ByteString getNameBytes() { - java.lang.Object ref = name_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - name_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class); } - public static final int DETAILS_FIELD_NUMBER = 2; + public static final int SERVICE_ID_FIELD_NUMBER = 1; - private context.ContextOuterClass.OpticalLinkDetails details_; + private context.ContextOuterClass.ServiceId serviceId_; /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ @java.lang.Override - public boolean hasDetails() { - return details_ != null; + public boolean hasServiceId() { + return serviceId_ != null; } /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetails getDetails() { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + public context.ContextOuterClass.ServiceId getServiceId() { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() { - return getDetails(); + public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } - public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 3; + public static final int CONFIGRULE_CUSTOM_FIELD_NUMBER = 2; - private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_; + private context.ContextOuterClass.ConfigRule_Custom configruleCustom_; /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ @java.lang.Override - public boolean hasOpticalLinkUuid() { - return opticalLinkUuid_ != null; + public boolean hasConfigruleCustom() { + return configruleCustom_ != null; } /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ @java.lang.Override - public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() { - return getOpticalLinkUuid(); + public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } private byte memoizedIsInitialized = -1; @@ -78731,16 +79819,13 @@ public final class ContextOuterClass { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!getNameBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); - } - if (details_ != null) { - output.writeMessage(2, getDetails()); + if (serviceId_ != null) { + output.writeMessage(1, getServiceId()); } - if (opticalLinkUuid_ != null) { - output.writeMessage(3, getOpticalLinkUuid()); + if (configruleCustom_ != null) { + output.writeMessage(2, getConfigruleCustom()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -78749,16 +79834,13 @@ public final class ContextOuterClass { if (size != -1) return size; size = 0; - if (!getNameBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); - } - if (details_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDetails()); + if (serviceId_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId()); } - if (opticalLinkUuid_ != null) { - size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getOpticalLinkUuid()); + if (configruleCustom_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConfigruleCustom()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -78768,25 +79850,23 @@ public final class ContextOuterClass { if (obj == this) { return true; } - if (!(obj instanceof context.ContextOuterClass.OpticalLink)) { + if (!(obj instanceof context.ContextOuterClass.ServiceConfigRule)) { return super.equals(obj); } - context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj; - if (!getName().equals(other.getName())) - return false; - if (hasDetails() != other.hasDetails()) + context.ContextOuterClass.ServiceConfigRule other = (context.ContextOuterClass.ServiceConfigRule) obj; + if (hasServiceId() != other.hasServiceId()) return false; - if (hasDetails()) { - if (!getDetails().equals(other.getDetails())) + if (hasServiceId()) { + if (!getServiceId().equals(other.getServiceId())) return false; } - if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid()) + if (hasConfigruleCustom() != other.hasConfigruleCustom()) return false; - if (hasOpticalLinkUuid()) { - if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid())) + if (hasConfigruleCustom()) { + if (!getConfigruleCustom().equals(other.getConfigruleCustom())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -78798,66 +79878,64 @@ public final class ContextOuterClass { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + NAME_FIELD_NUMBER; - hash = (53 * hash) + getName().hashCode(); - if (hasDetails()) { - hash = (37 * hash) + DETAILS_FIELD_NUMBER; - hash = (53 * hash) + getDetails().hashCode(); + if (hasServiceId()) { + hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER; + hash = (53 * hash) + getServiceId().hashCode(); } - if (hasOpticalLinkUuid()) { - hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER; - hash = (53 * hash) + getOpticalLinkUuid().hashCode(); + if (hasConfigruleCustom()) { + hash = (37 * hash) + CONFIGRULE_CUSTOM_FIELD_NUMBER; + hash = (53 * hash) + getConfigruleCustom().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } - public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } - public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry); } @@ -78870,7 +79948,7 @@ public final class ContextOuterClass { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) { + public static Builder newBuilder(context.ContextOuterClass.ServiceConfigRule prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @@ -78886,67 +79964,58 @@ public final class ContextOuterClass { } /** - * Protobuf type {@code context.OpticalLink} + * Protobuf type {@code context.ServiceConfigRule} */ - public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.OpticalLink) - context.ContextOuterClass.OpticalLinkOrBuilder { + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:context.ServiceConfigRule) + context.ContextOuterClass.ServiceConfigRuleOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class); + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class); } - // Construct using context.ContextOuterClass.OpticalLink.newBuilder() + // Construct using context.ContextOuterClass.ServiceConfigRule.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - name_ = ""; - if (detailsBuilder_ == null) { - details_ = null; - } else { - details_ = null; - detailsBuilder_ = null; + bitField0_ = 0; + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); + serviceIdBuilder_ = null; } - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = null; - } else { - opticalLinkUuid_ = null; - opticalLinkUuidBuilder_ = null; + configruleCustom_ = null; + if (configruleCustomBuilder_ != null) { + configruleCustomBuilder_.dispose(); + configruleCustomBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor; + return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor; } @java.lang.Override - public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { - return context.ContextOuterClass.OpticalLink.getDefaultInstance(); + public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() { + return context.ContextOuterClass.ServiceConfigRule.getDefaultInstance(); } @java.lang.Override - public context.ContextOuterClass.OpticalLink build() { - context.ContextOuterClass.OpticalLink result = buildPartial(); + public context.ContextOuterClass.ServiceConfigRule build() { + context.ContextOuterClass.ServiceConfigRule result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -78954,77 +80023,45 @@ public final class ContextOuterClass { } @java.lang.Override - public context.ContextOuterClass.OpticalLink buildPartial() { - context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this); - result.name_ = name_; - if (detailsBuilder_ == null) { - result.details_ = details_; - } else { - result.details_ = detailsBuilder_.build(); - } - if (opticalLinkUuidBuilder_ == null) { - result.opticalLinkUuid_ = opticalLinkUuid_; - } else { - result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build(); + public context.ContextOuterClass.ServiceConfigRule buildPartial() { + context.ContextOuterClass.ServiceConfigRule result = new context.ContextOuterClass.ServiceConfigRule(this); + if (bitField0_ != 0) { + buildPartial0(result); } onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(context.ContextOuterClass.ServiceConfigRule result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.configruleCustom_ = configruleCustomBuilder_ == null ? configruleCustom_ : configruleCustomBuilder_.build(); + } } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof context.ContextOuterClass.OpticalLink) { - return mergeFrom((context.ContextOuterClass.OpticalLink) other); + if (other instanceof context.ContextOuterClass.ServiceConfigRule) { + return mergeFrom((context.ContextOuterClass.ServiceConfigRule) other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) { - if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance()) + public Builder mergeFrom(context.ContextOuterClass.ServiceConfigRule other) { + if (other == context.ContextOuterClass.ServiceConfigRule.getDefaultInstance()) return this; - if (!other.getName().isEmpty()) { - name_ = other.name_; - onChanged(); - } - if (other.hasDetails()) { - mergeDetails(other.getDetails()); + if (other.hasServiceId()) { + mergeServiceId(other.getServiceId()); } - if (other.hasOpticalLinkUuid()) { - mergeOpticalLinkUuid(other.getOpticalLinkUuid()); + if (other.hasConfigruleCustom()) { + mergeConfigruleCustom(other.getConfigruleCustom()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -79036,318 +80073,288 @@ public final class ContextOuterClass { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - context.ContextOuterClass.OpticalLink parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getConfigruleCustomFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (context.ContextOuterClass.OpticalLink) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private java.lang.Object name_ = ""; - - /** - * string name = 1; - * @return The name. - */ - public java.lang.String getName() { - java.lang.Object ref = name_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - name_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - - /** - * string name = 1; - * @return The bytes for name. - */ - public com.google.protobuf.ByteString getNameBytes() { - java.lang.Object ref = name_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); - name_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - /** - * string name = 1; - * @param value The name to set. - * @return This builder for chaining. - */ - public Builder setName(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); + onChanged(); } - name_ = value; - onChanged(); + // finally return this; } - /** - * string name = 1; - * @return This builder for chaining. - */ - public Builder clearName() { - name_ = getDefaultInstance().getName(); - onChanged(); - return this; - } - - /** - * string name = 1; - * @param value The bytes for name to set. - * @return This builder for chaining. - */ - public Builder setNameBytes(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - name_ = value; - onChanged(); - return this; - } + private int bitField0_; - private context.ContextOuterClass.OpticalLinkDetails details_; + private context.ContextOuterClass.ServiceId serviceId_; - private com.google.protobuf.SingleFieldBuilderV3 detailsBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 serviceIdBuilder_; /** - * .context.OpticalLinkDetails details = 2; - * @return Whether the details field is set. + * .context.ServiceId service_id = 1; + * @return Whether the serviceId field is set. */ - public boolean hasDetails() { - return detailsBuilder_ != null || details_ != null; + public boolean hasServiceId() { + return ((bitField0_ & 0x00000001) != 0); } /** - * .context.OpticalLinkDetails details = 2; - * @return The details. + * .context.ServiceId service_id = 1; + * @return The serviceId. */ - public context.ContextOuterClass.OpticalLinkDetails getDetails() { - if (detailsBuilder_ == null) { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + public context.ContextOuterClass.ServiceId getServiceId() { + if (serviceIdBuilder_ == null) { + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } else { - return detailsBuilder_.getMessage(); + return serviceIdBuilder_.getMessage(); } } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails value) { - if (detailsBuilder_ == null) { + public Builder setServiceId(context.ContextOuterClass.ServiceId value) { + if (serviceIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - details_ = value; - onChanged(); + serviceId_ = value; } else { - detailsBuilder_.setMessage(value); + serviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) { - if (detailsBuilder_ == null) { - details_ = builderForValue.build(); - onChanged(); + public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) { + if (serviceIdBuilder_ == null) { + serviceId_ = builderForValue.build(); } else { - detailsBuilder_.setMessage(builderForValue.build()); + serviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder mergeDetails(context.ContextOuterClass.OpticalLinkDetails value) { - if (detailsBuilder_ == null) { - if (details_ != null) { - details_ = context.ContextOuterClass.OpticalLinkDetails.newBuilder(details_).mergeFrom(value).buildPartial(); + public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) { + if (serviceIdBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) { + getServiceIdBuilder().mergeFrom(value); } else { - details_ = value; + serviceId_ = value; } - onChanged(); } else { - detailsBuilder_.mergeFrom(value); + serviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public Builder clearDetails() { - if (detailsBuilder_ == null) { - details_ = null; - onChanged(); - } else { - details_ = null; - detailsBuilder_ = null; + public Builder clearServiceId() { + bitField0_ = (bitField0_ & ~0x00000001); + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); + serviceIdBuilder_ = null; } + onChanged(); return this; } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public context.ContextOuterClass.OpticalLinkDetails.Builder getDetailsBuilder() { + public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); - return getDetailsFieldBuilder().getBuilder(); + return getServiceIdFieldBuilder().getBuilder(); } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() { - if (detailsBuilder_ != null) { - return detailsBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { + if (serviceIdBuilder_ != null) { + return serviceIdBuilder_.getMessageOrBuilder(); } else { - return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_; + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } } /** - * .context.OpticalLinkDetails details = 2; + * .context.ServiceId service_id = 1; */ - private com.google.protobuf.SingleFieldBuilderV3 getDetailsFieldBuilder() { - if (detailsBuilder_ == null) { - detailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getDetails(), getParentForChildren(), isClean()); - details_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getServiceIdFieldBuilder() { + if (serviceIdBuilder_ == null) { + serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getServiceId(), getParentForChildren(), isClean()); + serviceId_ = null; } - return detailsBuilder_; + return serviceIdBuilder_; } - private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_; + private context.ContextOuterClass.ConfigRule_Custom configruleCustom_; - private com.google.protobuf.SingleFieldBuilderV3 opticalLinkUuidBuilder_; + private com.google.protobuf.SingleFieldBuilderV3 configruleCustomBuilder_; /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return Whether the opticalLinkUuid field is set. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return Whether the configruleCustom field is set. */ - public boolean hasOpticalLinkUuid() { - return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null; + public boolean hasConfigruleCustom() { + return ((bitField0_ & 0x00000002) != 0); } /** - * .context.OpticalLinkId optical_link_uuid = 3; - * @return The opticalLinkUuid. + * .context.ConfigRule_Custom configrule_custom = 2; + * @return The configruleCustom. */ - public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() { + if (configruleCustomBuilder_ == null) { + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } else { - return opticalLinkUuidBuilder_.getMessage(); + return configruleCustomBuilder_.getMessage(); } } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) { - if (opticalLinkUuidBuilder_ == null) { + public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) { + if (configruleCustomBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - opticalLinkUuid_ = value; - onChanged(); + configruleCustom_ = value; } else { - opticalLinkUuidBuilder_.setMessage(value); + configruleCustomBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId.Builder builderForValue) { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = builderForValue.build(); - onChanged(); + public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) { + if (configruleCustomBuilder_ == null) { + configruleCustom_ = builderForValue.build(); } else { - opticalLinkUuidBuilder_.setMessage(builderForValue.build()); + configruleCustomBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder mergeOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) { - if (opticalLinkUuidBuilder_ == null) { - if (opticalLinkUuid_ != null) { - opticalLinkUuid_ = context.ContextOuterClass.OpticalLinkId.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial(); + public Builder mergeConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) { + if (configruleCustomBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && configruleCustom_ != null && configruleCustom_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) { + getConfigruleCustomBuilder().mergeFrom(value); } else { - opticalLinkUuid_ = value; + configruleCustom_ = value; } - onChanged(); } else { - opticalLinkUuidBuilder_.mergeFrom(value); + configruleCustomBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public Builder clearOpticalLinkUuid() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuid_ = null; - onChanged(); - } else { - opticalLinkUuid_ = null; - opticalLinkUuidBuilder_ = null; + public Builder clearConfigruleCustom() { + bitField0_ = (bitField0_ & ~0x00000002); + configruleCustom_ = null; + if (configruleCustomBuilder_ != null) { + configruleCustomBuilder_.dispose(); + configruleCustomBuilder_ = null; } + onChanged(); return this; } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public context.ContextOuterClass.OpticalLinkId.Builder getOpticalLinkUuidBuilder() { + public context.ContextOuterClass.ConfigRule_Custom.Builder getConfigruleCustomBuilder() { + bitField0_ |= 0x00000002; onChanged(); - return getOpticalLinkUuidFieldBuilder().getBuilder(); + return getConfigruleCustomFieldBuilder().getBuilder(); } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() { - if (opticalLinkUuidBuilder_ != null) { - return opticalLinkUuidBuilder_.getMessageOrBuilder(); + public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() { + if (configruleCustomBuilder_ != null) { + return configruleCustomBuilder_.getMessageOrBuilder(); } else { - return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_; + return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_; } } /** - * .context.OpticalLinkId optical_link_uuid = 3; + * .context.ConfigRule_Custom configrule_custom = 2; */ - private com.google.protobuf.SingleFieldBuilderV3 getOpticalLinkUuidFieldBuilder() { - if (opticalLinkUuidBuilder_ == null) { - opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getOpticalLinkUuid(), getParentForChildren(), isClean()); - opticalLinkUuid_ = null; + private com.google.protobuf.SingleFieldBuilderV3 getConfigruleCustomFieldBuilder() { + if (configruleCustomBuilder_ == null) { + configruleCustomBuilder_ = new com.google.protobuf.SingleFieldBuilderV3(getConfigruleCustom(), getParentForChildren(), isClean()); + configruleCustom_ = null; } - return opticalLinkUuidBuilder_; + return configruleCustomBuilder_; } @java.lang.Override @@ -79359,39 +80366,49 @@ public final class ContextOuterClass { public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } - // @@protoc_insertion_point(builder_scope:context.OpticalLink) + // @@protoc_insertion_point(builder_scope:context.ServiceConfigRule) } - // @@protoc_insertion_point(class_scope:context.OpticalLink) - private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:context.ServiceConfigRule) + private static final context.ContextOuterClass.ServiceConfigRule DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink(); + DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfigRule(); } - public static context.ContextOuterClass.OpticalLink getDefaultInstance() { + public static context.ContextOuterClass.ServiceConfigRule getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new OpticalLink(input, extensionRegistry); + public ServiceConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() { + public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } @@ -79700,6 +80717,14 @@ public final class ContextOuterClass { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Exclusions_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_QoSProfileId_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_QoSProfileId_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_QoSProfile_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_QoSProfile_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_fieldAccessorTable; @@ -79724,26 +80749,42 @@ public final class ContextOuterClass { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigList_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkId_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigEvent_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkId_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigEvent_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_FiberId_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalEndPointId_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_FiberId_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalEndPointId_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Fiber_descriptor; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkList_descriptor; - private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Fiber_fieldAccessorTable; + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkList_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable; + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLink_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLink_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceConfigRule_descriptor; + + private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceConfigRule_fieldAccessorTable; + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; } @@ -79751,7 +80792,7 @@ public final class ContextOuterClass { private static com.google.protobuf.Descriptors.FileDescriptor descriptor; static { - java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\350\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013*\217\001" + "\n\033DeviceOperationalStatusEnum\022%\n!DEVICEO" + "PERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOP" + "ERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPER" + "ATIONALSTATUS_ENABLED\020\002*\320\001\n\017ServiceTypeE" + "num\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICET" + "YPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERV" + "ICETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016S" + "ERVICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n " + "SERVICETYPE_OPTICAL_CONNECTIVITY\020\006*\304\001\n\021S" + "erviceStatusEnum\022\033\n\027SERVICESTATUS_UNDEFI" + "NED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024SERV" + "ICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_UPDA" + "TING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020" + "\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n\017Sl" + "iceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000" + "\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS" + "_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICE" + "STATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLA" + "TED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTIO" + "N_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023C" + "ONFIGACTION_DELETE\020\002*m\n\024ConstraintAction" + "Enum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022\030\n\024" + "CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTACTI" + "ON_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO" + "_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021" + "LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION" + "\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHY" + "SICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RES" + "OURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_I" + "SOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n\016Co" + "ntextService\022:\n\016ListContextIds\022\016.context" + ".Empty\032\026.context.ContextIdList\"\000\0226\n\014List" + "Contexts\022\016.context.Empty\032\024.context.Conte" + "xtList\"\000\0224\n\nGetContext\022\022.context.Context" + "Id\032\020.context.Context\"\000\0224\n\nSetContext\022\020.c" + "ontext.Context\032\022.context.ContextId\"\000\0225\n\r" + "RemoveContext\022\022.context.ContextId\032\016.cont" + "ext.Empty\"\000\022=\n\020GetContextEvents\022\016.contex" + "t.Empty\032\025.context.ContextEvent\"\0000\001\022@\n\017Li" + "stTopologyIds\022\022.context.ContextId\032\027.cont" + "ext.TopologyIdList\"\000\022=\n\016ListTopologies\022\022" + ".context.ContextId\032\025.context.TopologyLis" + "t\"\000\0227\n\013GetTopology\022\023.context.TopologyId\032" + "\021.context.Topology\"\000\022E\n\022GetTopologyDetai" + "ls\022\023.context.TopologyId\032\030.context.Topolo" + "gyDetails\"\000\0227\n\013SetTopology\022\021.context.Top" + "ology\032\023.context.TopologyId\"\000\0227\n\016RemoveTo" + "pology\022\023.context.TopologyId\032\016.context.Em" + "pty\"\000\022?\n\021GetTopologyEvents\022\016.context.Emp" + "ty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListDe" + "viceIds\022\016.context.Empty\032\025.context.Device" + "IdList\"\000\0224\n\013ListDevices\022\016.context.Empty\032" + "\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.co" + "ntext.DeviceId\032\017.context.Device\"\000\0221\n\tSet" + "Device\022\017.context.Device\032\021.context.Device" + "Id\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId\032" + "\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016.c" + "ontext.Empty\032\024.context.DeviceEvent\"\0000\001\022<" + "\n\014SelectDevice\022\025.context.DeviceFilter\032\023." + "context.DeviceList\"\000\022I\n\021ListEndPointName" + "s\022\027.context.EndPointIdList\032\031.context.End" + "PointNameList\"\000\0224\n\013ListLinkIds\022\016.context" + ".Empty\032\023.context.LinkIdList\"\000\0220\n\tListLin" + "ks\022\016.context.Empty\032\021.context.LinkList\"\000\022" + "+\n\007GetLink\022\017.context.LinkId\032\r.context.Li" + "nk\"\000\022+\n\007SetLink\022\r.context.Link\032\017.context" + ".LinkId\"\000\022/\n\nRemoveLink\022\017.context.LinkId" + "\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016.co" + "ntext.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016L" + "istServiceIds\022\022.context.ContextId\032\026.cont" + "ext.ServiceIdList\"\000\022:\n\014ListServices\022\022.co" + "ntext.ContextId\032\024.context.ServiceList\"\000\022" + "4\n\nGetService\022\022.context.ServiceId\032\020.cont" + "ext.Service\"\000\0224\n\nSetService\022\020.context.Se" + "rvice\032\022.context.ServiceId\"\000\0226\n\014UnsetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0225\n\rRemoveService\022\022.context.ServiceId" + "\032\016.context.Empty\"\000\022=\n\020GetServiceEvents\022\016" + ".context.Empty\032\025.context.ServiceEvent\"\0000" + "\001\022?\n\rSelectService\022\026.context.ServiceFilt" + "er\032\024.context.ServiceList\"\000\022:\n\014ListSliceI" + "ds\022\022.context.ContextId\032\024.context.SliceId" + "List\"\000\0226\n\nListSlices\022\022.context.ContextId" + "\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.con" + "text.SliceId\032\016.context.Slice\"\000\022.\n\010SetSli" + "ce\022\016.context.Slice\032\020.context.SliceId\"\000\0220" + "\n\nUnsetSlice\022\016.context.Slice\032\020.context.S" + "liceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceI" + "d\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016." + "context.Empty\032\023.context.SliceEvent\"\0000\001\0229" + "\n\013SelectSlice\022\024.context.SliceFilter\032\022.co" + "ntext.SliceList\"\000\022D\n\021ListConnectionIds\022\022" + ".context.ServiceId\032\031.context.ConnectionI" + "dList\"\000\022@\n\017ListConnections\022\022.context.Ser" + "viceId\032\027.context.ConnectionList\"\000\022=\n\rGet" + "Connection\022\025.context.ConnectionId\032\023.cont" + "ext.Connection\"\000\022=\n\rSetConnection\022\023.cont" + "ext.Connection\032\025.context.ConnectionId\"\000\022" + ";\n\020RemoveConnection\022\025.context.Connection" + "Id\032\016.context.Empty\"\000\022C\n\023GetConnectionEve" + "nts\022\016.context.Empty\032\030.context.Connection" + "Event\"\0000\001\022@\n\020GetOpticalConfig\022\016.context." + "Empty\032\032.context.OpticalConfigList\"\000\022F\n\020S" + "etOpticalConfig\022\026.context.OpticalConfig\032" + "\030.context.OpticalConfigId\"\000\022I\n\023SelectOpt" + "icalConfig\022\030.context.OpticalConfigId\032\026.c" + "ontext.OpticalConfig\"\000\0228\n\016SetOpticalLink" + "\022\024.context.OpticalLink\032\016.context.Empty\"\000" + "\022@\n\016GetOpticalLink\022\026.context.OpticalLink" + "Id\032\024.context.OpticalLink\"\000\022.\n\010GetFiber\022\020" + ".context.FiberId\032\016.context.Fiber\"\000b\006prot" + "o3" }; + java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\267\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\022)\n\020optical_link_ids\030\005 \003(\0132\017." + "context.LinkId\"\266\001\n\017TopologyDetails\022(\n\013to" + "pology_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004" + "name\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.De" + "vice\022\034\n\005links\030\004 \003(\0132\r.context.Link\022+\n\rop" + "tical_links\030\005 \003(\0132\024.context.OpticalLink\"" + ";\n\016TopologyIdList\022)\n\014topology_ids\030\001 \003(\0132" + "\023.context.TopologyId\"5\n\014TopologyList\022%\n\n" + "topologies\030\001 \003(\0132\021.context.Topology\"X\n\rT" + "opologyEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022(\n\013topology_id\030\002 \001(\0132\023.context.Topol" + "ogyId\".\n\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r" + ".context.Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 " + "\001(\0132\021.context.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013" + "device_type\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\013" + "2\025.context.DeviceConfig\022G\n\031device_operat" + "ional_status\030\005 \001(\0162$.context.DeviceOpera" + "tionalStatusEnum\0221\n\016device_drivers\030\006 \003(\016" + "2\031.context.DeviceDriverEnum\022+\n\020device_en" + "dpoints\030\007 \003(\0132\021.context.EndPoint\022&\n\ncomp" + "onents\030\010 \003(\0132\022.context.Component\022(\n\rcont" + "roller_id\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tC" + "omponent\022%\n\016component_uuid\030\001 \001(\0132\r.conte" + "xt.Uuid\022\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\na" + "ttributes\030\004 \003(\0132\".context.Component.Attr" + "ibutesEntry\022\016\n\006parent\030\005 \001(\t\0321\n\017Attribute" + "sEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9" + "\n\014DeviceConfig\022)\n\014config_rules\030\001 \003(\0132\023.c" + "ontext.ConfigRule\"5\n\014DeviceIdList\022%\n\ndev" + "ice_ids\030\001 \003(\0132\021.context.DeviceId\".\n\nDevi" + "ceList\022 \n\007devices\030\001 \003(\0132\017.context.Device" + "\"\216\001\n\014DeviceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025." + "context.DeviceIdList\022\031\n\021include_endpoint" + "s\030\002 \001(\010\022\034\n\024include_config_rules\030\003 \001(\010\022\032\n" + "\022include_components\030\004 \001(\010\"\200\001\n\013DeviceEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022$\n\tdevi" + "ce_id\030\002 \001(\0132\021.context.DeviceId\022,\n\rdevice" + "_config\030\003 \001(\0132\025.context.DeviceConfig\"*\n\006" + "LinkId\022 \n\tlink_uuid\030\001 \001(\0132\r.context.Uuid" + "\"I\n\016LinkAttributes\022\033\n\023total_capacity_gbp" + "s\030\001 \001(\002\022\032\n\022used_capacity_gbps\030\002 \001(\002\"\275\001\n\004" + "Link\022 \n\007link_id\030\001 \001(\0132\017.context.LinkId\022\014" + "\n\004name\030\002 \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022+\n\nattributes\030\004 \001(\013" + "2\027.context.LinkAttributes\022(\n\tlink_type\030\005" + " \001(\0162\025.context.LinkTypeEnum\"/\n\nLinkIdLis" + "t\022!\n\010link_ids\030\001 \003(\0132\017.context.LinkId\"(\n\010" + "LinkList\022\034\n\005links\030\001 \003(\0132\r.context.Link\"L" + "\n\tLinkEvent\022\035\n\005event\030\001 \001(\0132\016.context.Eve" + "nt\022 \n\007link_id\030\002 \001(\0132\017.context.LinkId\"X\n\t" + "ServiceId\022&\n\ncontext_id\030\001 \001(\0132\022.context." + "ContextId\022#\n\014service_uuid\030\002 \001(\0132\r.contex" + "t.Uuid\"\333\002\n\007Service\022&\n\nservice_id\030\001 \001(\0132\022" + ".context.ServiceId\022\014\n\004name\030\002 \001(\t\022.\n\014serv" + "ice_type\030\003 \001(\0162\030.context.ServiceTypeEnum" + "\0221\n\024service_endpoint_ids\030\004 \003(\0132\023.context" + ".EndPointId\0220\n\023service_constraints\030\005 \003(\013" + "2\023.context.Constraint\022.\n\016service_status\030" + "\006 \001(\0132\026.context.ServiceStatus\022.\n\016service" + "_config\030\007 \001(\0132\026.context.ServiceConfig\022%\n" + "\ttimestamp\030\010 \001(\0132\022.context.Timestamp\"C\n\r" + "ServiceStatus\0222\n\016service_status\030\001 \001(\0162\032." + "context.ServiceStatusEnum\":\n\rServiceConf" + "ig\022)\n\014config_rules\030\001 \003(\0132\023.context.Confi" + "gRule\"8\n\rServiceIdList\022\'\n\013service_ids\030\001 " + "\003(\0132\022.context.ServiceId\"1\n\013ServiceList\022\"" + "\n\010services\030\001 \003(\0132\020.context.Service\"\225\001\n\rS" + "erviceFilter\022+\n\013service_ids\030\001 \001(\0132\026.cont" + "ext.ServiceIdList\022\034\n\024include_endpoint_id" + "s\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001(\010\022\034\n\024" + "include_config_rules\030\004 \001(\010\"U\n\014ServiceEve" + "nt\022\035\n\005event\030\001 \001(\0132\016.context.Event\022&\n\nser" + "vice_id\030\002 \001(\0132\022.context.ServiceId\"T\n\007Sli" + "ceId\022&\n\ncontext_id\030\001 \001(\0132\022.context.Conte" + "xtId\022!\n\nslice_uuid\030\002 \001(\0132\r.context.Uuid\"" + "\240\003\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.context.Sl" + "iceId\022\014\n\004name\030\002 \001(\t\022/\n\022slice_endpoint_id" + "s\030\003 \003(\0132\023.context.EndPointId\022.\n\021slice_co" + "nstraints\030\004 \003(\0132\023.context.Constraint\022-\n\021" + "slice_service_ids\030\005 \003(\0132\022.context.Servic" + "eId\022,\n\022slice_subslice_ids\030\006 \003(\0132\020.contex" + "t.SliceId\022*\n\014slice_status\030\007 \001(\0132\024.contex" + "t.SliceStatus\022*\n\014slice_config\030\010 \001(\0132\024.co" + "ntext.SliceConfig\022(\n\013slice_owner\030\t \001(\0132\023" + ".context.SliceOwner\022%\n\ttimestamp\030\n \001(\0132\022" + ".context.Timestamp\"E\n\nSliceOwner\022!\n\nowne" + "r_uuid\030\001 \001(\0132\r.context.Uuid\022\024\n\014owner_str" + "ing\030\002 \001(\t\"=\n\013SliceStatus\022.\n\014slice_status" + "\030\001 \001(\0162\030.context.SliceStatusEnum\"8\n\013Slic" + "eConfig\022)\n\014config_rules\030\001 \003(\0132\023.context." + "ConfigRule\"2\n\013SliceIdList\022#\n\tslice_ids\030\001" + " \003(\0132\020.context.SliceId\"+\n\tSliceList\022\036\n\006s" + "lices\030\001 \003(\0132\016.context.Slice\"\312\001\n\013SliceFil" + "ter\022\'\n\tslice_ids\030\001 \001(\0132\024.context.SliceId" + "List\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023in" + "clude_constraints\030\003 \001(\010\022\033\n\023include_servi" + "ce_ids\030\004 \001(\010\022\034\n\024include_subslice_ids\030\005 \001" + "(\010\022\034\n\024include_config_rules\030\006 \001(\010\"O\n\nSlic" + "eEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022\"\n" + "\010slice_id\030\002 \001(\0132\020.context.SliceId\"6\n\014Con" + "nectionId\022&\n\017connection_uuid\030\001 \001(\0132\r.con" + "text.Uuid\"2\n\025ConnectionSettings_L0\022\031\n\021ls" + "p_symbolic_name\030\001 \001(\t\"\236\001\n\025ConnectionSett" + "ings_L2\022\027\n\017src_mac_address\030\001 \001(\t\022\027\n\017dst_" + "mac_address\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n" + "\007vlan_id\030\004 \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mp" + "ls_traffic_class\030\006 \001(\r\"t\n\025ConnectionSett" + "ings_L3\022\026\n\016src_ip_address\030\001 \001(\t\022\026\n\016dst_i" + "p_address\030\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protoco" + "l\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025ConnectionSettin" + "gs_L4\022\020\n\010src_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(" + "\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022Co" + "nnectionSettings\022*\n\002l0\030\001 \001(\0132\036.context.C" + "onnectionSettings_L0\022*\n\002l2\030\002 \001(\0132\036.conte" + "xt.ConnectionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.c" + "ontext.ConnectionSettings_L3\022*\n\002l4\030\004 \001(\013" + "2\036.context.ConnectionSettings_L4\"\363\001\n\nCon" + "nection\022,\n\rconnection_id\030\001 \001(\0132\025.context" + ".ConnectionId\022&\n\nservice_id\030\002 \001(\0132\022.cont" + "ext.ServiceId\0223\n\026path_hops_endpoint_ids\030" + "\003 \003(\0132\023.context.EndPointId\022+\n\017sub_servic" + "e_ids\030\004 \003(\0132\022.context.ServiceId\022-\n\010setti" + "ngs\030\005 \001(\0132\033.context.ConnectionSettings\"A" + "\n\020ConnectionIdList\022-\n\016connection_ids\030\001 \003" + "(\0132\025.context.ConnectionId\":\n\016ConnectionL" + "ist\022(\n\013connections\030\001 \003(\0132\023.context.Conne" + "ction\"^\n\017ConnectionEvent\022\035\n\005event\030\001 \001(\0132" + "\016.context.Event\022,\n\rconnection_id\030\002 \001(\0132\025" + ".context.ConnectionId\"\202\001\n\nEndPointId\022(\n\013" + "topology_id\030\001 \001(\0132\023.context.TopologyId\022$" + "\n\tdevice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\r" + "endpoint_uuid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010E" + "ndPoint\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type" + "\030\003 \001(\t\0229\n\020kpi_sample_types\030\004 \003(\0162\037.kpi_s" + "ample_types.KpiSampleType\022,\n\021endpoint_lo" + "cation\030\005 \001(\0132\021.context.Location\"{\n\014EndPo" + "intName\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoi" + "nt_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016" + "EndPointIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023.c" + "ontext.EndPointId\"A\n\020EndPointNameList\022-\n" + "\016endpoint_names\030\001 \003(\0132\025.context.EndPoint" + "Name\"A\n\021ConfigRule_Custom\022\024\n\014resource_ke" + "y\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016Confi" + "gRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.context" + ".EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclR" + "uleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031." + "context.ConfigActionEnum\022,\n\006custom\030\002 \001(\013" + "2\032.context.ConfigRule_CustomH\000\022&\n\003acl\030\003 " + "\001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013config" + "_rule\"F\n\021Constraint_Custom\022\027\n\017constraint" + "_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n" + "\023Constraint_Schedule\022\027\n\017start_timestamp\030" + "\001 \001(\001\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Posi" + "tion\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(" + "\002\"\204\001\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_" + "position\030\002 \001(\0132\025.context.GPS_PositionH\000\022" + "\023\n\tinterface\030\003 \001(\tH\000\022\026\n\014circuit_pack\030\004 \001" + "(\tH\000B\n\n\010location\"l\n\033Constraint_EndPointL" + "ocation\022(\n\013endpoint_id\030\001 \001(\0132\023.context.E" + "ndPointId\022#\n\010location\030\002 \001(\0132\021.context.Lo" + "cation\"Y\n\033Constraint_EndPointPriority\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Late" + "ncy\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrain" + "t_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c\n" + "\033Constraint_SLA_Availability\022\032\n\022num_disj" + "oint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n\014" + "availability\030\003 \001(\002\"V\n\036Constraint_SLA_Iso" + "lation_level\0224\n\017isolation_level\030\001 \003(\0162\033." + "context.IsolationLevelEnum\"\242\001\n\025Constrain" + "t_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nde" + "vice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014end" + "point_ids\030\003 \003(\0132\023.context.EndPointId\022!\n\010" + "link_ids\030\004 \003(\0132\017.context.LinkId\"5\n\014QoSPr" + "ofileId\022%\n\016qos_profile_id\030\001 \001(\0132\r.contex" + "t.Uuid\"`\n\025Constraint_QoSProfile\022-\n\016qos_p" + "rofile_id\030\001 \001(\0132\025.context.QoSProfileId\022\030" + "\n\020qos_profile_name\030\002 \001(\t\"\222\005\n\nConstraint\022" + "-\n\006action\030\001 \001(\0162\035.context.ConstraintActi" + "onEnum\022,\n\006custom\030\002 \001(\0132\032.context.Constra" + "int_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034.context" + ".Constraint_ScheduleH\000\022A\n\021endpoint_locat" + "ion\030\004 \001(\0132$.context.Constraint_EndPointL" + "ocationH\000\022A\n\021endpoint_priority\030\005 \001(\0132$.c" + "ontext.Constraint_EndPointPriorityH\000\0228\n\014" + "sla_capacity\030\006 \001(\0132 .context.Constraint_" + "SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.co" + "ntext.Constraint_SLA_LatencyH\000\022@\n\020sla_av" + "ailability\030\010 \001(\0132$.context.Constraint_SL" + "A_AvailabilityH\000\022@\n\rsla_isolation\030\t \001(\0132" + "\'.context.Constraint_SLA_Isolation_level" + "H\000\0224\n\nexclusions\030\n \001(\0132\036.context.Constra" + "int_ExclusionsH\000\0225\n\013qos_profile\030\013 \001(\0132\036." + "context.Constraint_QoSProfileH\000B\014\n\nconst" + "raint\"^\n\022TeraFlowController\022&\n\ncontext_i" + "d\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_addres" + "s\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024AuthenticationR" + "esult\022&\n\ncontext_id\030\001 \001(\0132\022.context.Cont" + "extId\022\025\n\rauthenticated\030\002 \001(\010\"-\n\017OpticalC" + "onfigId\022\032\n\022opticalconfig_uuid\030\001 \001(\t\"y\n\rO" + "pticalConfig\0222\n\020opticalconfig_id\030\001 \001(\0132\030" + ".context.OpticalConfigId\022\016\n\006config\030\002 \001(\t" + "\022$\n\tdevice_id\030\003 \001(\0132\021.context.DeviceId\"C" + "\n\021OpticalConfigList\022.\n\016opticalconfigs\030\001 " + "\003(\0132\026.context.OpticalConfig\"g\n\022OpticalCo" + "nfigEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event" + "\0222\n\020opticalconfig_id\030\002 \001(\0132\030.context.Opt" + "icalConfigId\"_\n\021OpticalEndPointId\022$\n\tdev" + "ice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpo" + "int_uuid\030\003 \001(\0132\r.context.Uuid\">\n\017Optical" + "LinkList\022+\n\roptical_links\030\001 \003(\0132\024.contex" + "t.OpticalLink\"\304\003\n\022OpticalLinkDetails\022\016\n\006" + "length\030\001 \001(\002\022\020\n\010src_port\030\002 \001(\t\022\020\n\010dst_po" + "rt\030\003 \001(\t\022\027\n\017local_peer_port\030\004 \001(\t\022\030\n\020rem" + "ote_peer_port\030\005 \001(\t\022\014\n\004used\030\006 \001(\010\0228\n\007c_s" + "lots\030\007 \003(\0132\'.context.OpticalLinkDetails." + "CSlotsEntry\0228\n\007l_slots\030\010 \003(\0132\'.context.O" + "pticalLinkDetails.LSlotsEntry\0228\n\007s_slots" + "\030\t \003(\0132\'.context.OpticalLinkDetails.SSlo" + "tsEntry\032-\n\013CSlotsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005v" + "alue\030\002 \001(\005:\0028\001\032-\n\013LSlotsEntry\022\013\n\003key\030\001 \001" + "(\t\022\r\n\005value\030\002 \001(\005:\0028\001\032-\n\013SSlotsEntry\022\013\n\003" + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"\243\001\n\013Optical" + "Link\022\014\n\004name\030\001 \001(\t\0224\n\017optical_details\030\002 " + "\001(\0132\033.context.OpticalLinkDetails\022 \n\007link" + "_id\030\003 \001(\0132\017.context.LinkId\022.\n\021link_endpo" + "int_ids\030\004 \003(\0132\023.context.EndPointId\"r\n\021Se" + "rviceConfigRule\022&\n\nservice_id\030\001 \001(\0132\022.co" + "ntext.ServiceId\0225\n\021configrule_custom\030\002 \001" + "(\0132\032.context.ConfigRule_Custom*j\n\rEventT" + "ypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVEN" + "TTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n\020" + "EVENTTYPE_REMOVE\020\003*\376\002\n\020DeviceDriverEnum\022" + "\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDRI" + "VER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSPO" + "RT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICED" + "RIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICED" + "RIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006\022" + "\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICEDR" + "IVER_GNMI_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_O" + "PTICAL_TFS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020\n" + "\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_QK" + "D\020\014*\217\001\n\033DeviceOperationalStatusEnum\022%\n!D" + "EVICEOPERATIONALSTATUS_UNDEFINED\020\000\022$\n DE" + "VICEOPERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVI" + "CEOPERATIONALSTATUS_ENABLED\020\002*\212\001\n\014LinkTy" + "peEnum\022\024\n\020LINKTYPE_UNKNOWN\020\000\022\023\n\017LINKTYPE" + "_COPPER\020\001\022\033\n\027LINKTYPE_VIRTUAL_COPPER\020\002\022\024" + "\n\020LINKTYPE_OPTICAL\020\003\022\034\n\030LINKTYPE_VIRTUAL" + "_OPTICAL\020\004*\345\001\n\017ServiceTypeEnum\022\027\n\023SERVIC" + "ETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n" + "\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_" + "CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVICETYPE_TE" + "\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SERVICETYPE_O" + "PTICAL_CONNECTIVITY\020\006\022\023\n\017SERVICETYPE_QKD" + "\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027SERVICESTATU" + "S_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001" + "\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTA" + "TUS_UPDATING\020\003\022!\n\035SERVICESTATUS_PENDING_" + "REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020" + "\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICESTATUS_UND" + "EFINED\020\000\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLI" + "CESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022" + "\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_S" + "LA_VIOLATED\020\005*]\n\020ConfigActionEnum\022\032\n\026CON" + "FIGACTION_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SE" + "T\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n\024Constrai" + "ntActionEnum\022\036\n\032CONSTRAINTACTION_UNDEFIN" + "ED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTR" + "AINTACTION_DELETE\020\002*\203\002\n\022IsolationLevelEn" + "um\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATI" + "ON\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_I" + "SOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020" + "\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIR" + "TUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUN" + "CTIONS_ISOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020" + "\0102\202\034\n\016ContextService\022:\n\016ListContextIds\022\016" + ".context.Empty\032\026.context.ContextIdList\"\000" + "\0226\n\014ListContexts\022\016.context.Empty\032\024.conte" + "xt.ContextList\"\000\0224\n\nGetContext\022\022.context" + ".ContextId\032\020.context.Context\"\000\0224\n\nSetCon" + "text\022\020.context.Context\032\022.context.Context" + "Id\"\000\0225\n\rRemoveContext\022\022.context.ContextI" + "d\032\016.context.Empty\"\000\022=\n\020GetContextEvents\022" + "\016.context.Empty\032\025.context.ContextEvent\"\000" + "0\001\022@\n\017ListTopologyIds\022\022.context.ContextI" + "d\032\027.context.TopologyIdList\"\000\022=\n\016ListTopo" + "logies\022\022.context.ContextId\032\025.context.Top" + "ologyList\"\000\0227\n\013GetTopology\022\023.context.Top" + "ologyId\032\021.context.Topology\"\000\022E\n\022GetTopol" + "ogyDetails\022\023.context.TopologyId\032\030.contex" + "t.TopologyDetails\"\000\0227\n\013SetTopology\022\021.con" + "text.Topology\032\023.context.TopologyId\"\000\0227\n\016" + "RemoveTopology\022\023.context.TopologyId\032\016.co" + "ntext.Empty\"\000\022?\n\021GetTopologyEvents\022\016.con" + "text.Empty\032\026.context.TopologyEvent\"\0000\001\0228" + "\n\rListDeviceIds\022\016.context.Empty\032\025.contex" + "t.DeviceIdList\"\000\0224\n\013ListDevices\022\016.contex" + "t.Empty\032\023.context.DeviceList\"\000\0221\n\tGetDev" + "ice\022\021.context.DeviceId\032\017.context.Device\"" + "\000\0221\n\tSetDevice\022\017.context.Device\032\021.contex" + "t.DeviceId\"\000\0223\n\014RemoveDevice\022\021.context.D" + "eviceId\032\016.context.Empty\"\000\022;\n\017GetDeviceEv" + "ents\022\016.context.Empty\032\024.context.DeviceEve" + "nt\"\0000\001\022<\n\014SelectDevice\022\025.context.DeviceF" + "ilter\032\023.context.DeviceList\"\000\022I\n\021ListEndP" + "ointNames\022\027.context.EndPointIdList\032\031.con" + "text.EndPointNameList\"\000\0224\n\013ListLinkIds\022\016" + ".context.Empty\032\023.context.LinkIdList\"\000\0220\n" + "\tListLinks\022\016.context.Empty\032\021.context.Lin" + "kList\"\000\022+\n\007GetLink\022\017.context.LinkId\032\r.co" + "ntext.Link\"\000\022+\n\007SetLink\022\r.context.Link\032\017" + ".context.LinkId\"\000\022/\n\nRemoveLink\022\017.contex" + "t.LinkId\032\016.context.Empty\"\000\0227\n\rGetLinkEve" + "nts\022\016.context.Empty\032\022.context.LinkEvent\"" + "\0000\001\022>\n\016ListServiceIds\022\022.context.ContextI" + "d\032\026.context.ServiceIdList\"\000\022:\n\014ListServi" + "ces\022\022.context.ContextId\032\024.context.Servic" + "eList\"\000\0224\n\nGetService\022\022.context.ServiceI" + "d\032\020.context.Service\"\000\0224\n\nSetService\022\020.co" + "ntext.Service\032\022.context.ServiceId\"\000\0226\n\014U" + "nsetService\022\020.context.Service\032\022.context." + "ServiceId\"\000\0225\n\rRemoveService\022\022.context.S" + "erviceId\032\016.context.Empty\"\000\022=\n\020GetService" + "Events\022\016.context.Empty\032\025.context.Service" + "Event\"\0000\001\022?\n\rSelectService\022\026.context.Ser" + "viceFilter\032\024.context.ServiceList\"\000\022:\n\014Li" + "stSliceIds\022\022.context.ContextId\032\024.context" + ".SliceIdList\"\000\0226\n\nListSlices\022\022.context.C" + "ontextId\032\022.context.SliceList\"\000\022.\n\010GetSli" + "ce\022\020.context.SliceId\032\016.context.Slice\"\000\022." + "\n\010SetSlice\022\016.context.Slice\032\020.context.Sli" + "ceId\"\000\0220\n\nUnsetSlice\022\016.context.Slice\032\020.c" + "ontext.SliceId\"\000\0221\n\013RemoveSlice\022\020.contex" + "t.SliceId\032\016.context.Empty\"\000\0229\n\016GetSliceE" + "vents\022\016.context.Empty\032\023.context.SliceEve" + "nt\"\0000\001\0229\n\013SelectSlice\022\024.context.SliceFil" + "ter\032\022.context.SliceList\"\000\022D\n\021ListConnect" + "ionIds\022\022.context.ServiceId\032\031.context.Con" + "nectionIdList\"\000\022@\n\017ListConnections\022\022.con" + "text.ServiceId\032\027.context.ConnectionList\"" + "\000\022=\n\rGetConnection\022\025.context.ConnectionI" + "d\032\023.context.Connection\"\000\022=\n\rSetConnectio" + "n\022\023.context.Connection\032\025.context.Connect" + "ionId\"\000\022;\n\020RemoveConnection\022\025.context.Co" + "nnectionId\032\016.context.Empty\"\000\022C\n\023GetConne" + "ctionEvents\022\016.context.Empty\032\030.context.Co" + "nnectionEvent\"\0000\001\022@\n\020GetOpticalConfig\022\016." + "context.Empty\032\032.context.OpticalConfigLis" + "t\"\000\022F\n\020SetOpticalConfig\022\026.context.Optica" + "lConfig\032\030.context.OpticalConfigId\"\000\022I\n\023U" + "pdateOpticalConfig\022\026.context.OpticalConf" + "ig\032\030.context.OpticalConfigId\"\000\022I\n\023Select" + "OpticalConfig\022\030.context.OpticalConfigId\032" + "\026.context.OpticalConfig\"\000\022A\n\023DeleteOptic" + "alConfig\022\030.context.OpticalConfigId\032\016.con" + "text.Empty\"\000\022@\n\024DeleteOpticalChannel\022\026.c" + "ontext.OpticalConfig\032\016.context.Empty\"\000\0228" + "\n\016SetOpticalLink\022\024.context.OpticalLink\032\016" + ".context.Empty\"\000\0229\n\016GetOpticalLink\022\017.con" + "text.LinkId\032\024.context.OpticalLink\"\000\0226\n\021D" + "eleteOpticalLink\022\017.context.LinkId\032\016.cont" + "ext.Empty\"\000\022@\n\022GetOpticalLinkList\022\016.cont" + "ext.Empty\032\030.context.OpticalLinkList\"\000\022G\n" + "\027DeleteServiceConfigRule\022\032.context.Servi" + "ceConfigRule\032\016.context.Empty\"\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() }); internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {}); @@ -79774,9 +80815,9 @@ public final class ContextOuterClass { internal_static_context_TopologyId_descriptor = getDescriptor().getMessageTypes().get(9); internal_static_context_TopologyId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyId_descriptor, new java.lang.String[] { "ContextId", "TopologyUuid" }); internal_static_context_Topology_descriptor = getDescriptor().getMessageTypes().get(10); - internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds" }); + internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", "OpticalLinkIds" }); internal_static_context_TopologyDetails_descriptor = getDescriptor().getMessageTypes().get(11); - internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links" }); + internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links", "OpticalLinks" }); internal_static_context_TopologyIdList_descriptor = getDescriptor().getMessageTypes().get(12); internal_static_context_TopologyIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyIdList_descriptor, new java.lang.String[] { "TopologyIds" }); internal_static_context_TopologyList_descriptor = getDescriptor().getMessageTypes().get(13); @@ -79806,7 +80847,7 @@ public final class ContextOuterClass { internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24); internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" }); internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25); - internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes" }); + internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes", "LinkType" }); internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26); internal_static_context_LinkIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkIdList_descriptor, new java.lang.String[] { "LinkIds" }); internal_static_context_LinkList_descriptor = getDescriptor().getMessageTypes().get(27); @@ -79890,7 +80931,7 @@ public final class ContextOuterClass { internal_static_context_GPS_Position_descriptor = getDescriptor().getMessageTypes().get(66); internal_static_context_GPS_Position_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_GPS_Position_descriptor, new java.lang.String[] { "Latitude", "Longitude" }); internal_static_context_Location_descriptor = getDescriptor().getMessageTypes().get(67); - internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Location" }); + internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Interface", "CircuitPack", "Location" }); internal_static_context_Constraint_EndPointLocation_descriptor = getDescriptor().getMessageTypes().get(68); internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointLocation_descriptor, new java.lang.String[] { "EndpointId", "Location" }); internal_static_context_Constraint_EndPointPriority_descriptor = getDescriptor().getMessageTypes().get(69); @@ -79905,28 +80946,40 @@ public final class ContextOuterClass { internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Isolation_level_descriptor, new java.lang.String[] { "IsolationLevel" }); internal_static_context_Constraint_Exclusions_descriptor = getDescriptor().getMessageTypes().get(74); internal_static_context_Constraint_Exclusions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Exclusions_descriptor, new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds" }); - internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(75); - internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint" }); - internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(76); + internal_static_context_QoSProfileId_descriptor = getDescriptor().getMessageTypes().get(75); + internal_static_context_QoSProfileId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_QoSProfileId_descriptor, new java.lang.String[] { "QosProfileId" }); + internal_static_context_Constraint_QoSProfile_descriptor = getDescriptor().getMessageTypes().get(76); + internal_static_context_Constraint_QoSProfile_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_QoSProfile_descriptor, new java.lang.String[] { "QosProfileId", "QosProfileName" }); + internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(77); + internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "QosProfile", "Constraint" }); + internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(78); internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" }); - internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(77); + internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(79); internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" }); - internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(78); + internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(80); internal_static_context_OpticalConfigId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigId_descriptor, new java.lang.String[] { "OpticalconfigUuid" }); - internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(79); - internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config" }); - internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(80); + internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(81); + internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config", "DeviceId" }); + internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(82); internal_static_context_OpticalConfigList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigList_descriptor, new java.lang.String[] { "Opticalconfigs" }); - internal_static_context_OpticalLinkId_descriptor = getDescriptor().getMessageTypes().get(81); - internal_static_context_OpticalLinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkId_descriptor, new java.lang.String[] { "OpticalLinkUuid" }); - internal_static_context_FiberId_descriptor = getDescriptor().getMessageTypes().get(82); - internal_static_context_FiberId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_FiberId_descriptor, new java.lang.String[] { "FiberUuid" }); - internal_static_context_Fiber_descriptor = getDescriptor().getMessageTypes().get(83); - internal_static_context_Fiber_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Fiber_descriptor, new java.lang.String[] { "ID", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "CSlots", "LSlots", "SSlots", "Length", "Used", "FiberUuid" }); - internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(84); - internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "Source", "Target", "Fibers" }); - internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(85); - internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "Details", "OpticalLinkUuid" }); + internal_static_context_OpticalConfigEvent_descriptor = getDescriptor().getMessageTypes().get(83); + internal_static_context_OpticalConfigEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigEvent_descriptor, new java.lang.String[] { "Event", "OpticalconfigId" }); + internal_static_context_OpticalEndPointId_descriptor = getDescriptor().getMessageTypes().get(84); + internal_static_context_OpticalEndPointId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalEndPointId_descriptor, new java.lang.String[] { "DeviceId", "EndpointUuid" }); + internal_static_context_OpticalLinkList_descriptor = getDescriptor().getMessageTypes().get(85); + internal_static_context_OpticalLinkList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkList_descriptor, new java.lang.String[] { "OpticalLinks" }); + internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(86); + internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "Used", "CSlots", "LSlots", "SSlots" }); + internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(0); + internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(1); + internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(2); + internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" }); + internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(87); + internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "OpticalDetails", "LinkId", "LinkEndpointIds" }); + internal_static_context_ServiceConfigRule_descriptor = getDescriptor().getMessageTypes().get(88); + internal_static_context_ServiceConfigRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceConfigRule_descriptor, new java.lang.String[] { "ServiceId", "ConfigruleCustom" }); acl.Acl.getDescriptor(); kpi_sample_types.KpiSampleTypes.getDescriptor(); } diff --git a/src/ztp/target/generated-sources/grpc/context/ContextService.java b/src/ztp/target/generated-sources/grpc/context/ContextService.java index 32544e6be..d953e779f 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextService.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextService.java @@ -98,13 +98,23 @@ public interface ContextService extends MutinyService { io.smallrye.mutiny.Uni setOpticalConfig(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request); + io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request); + + io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request); + io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request); - io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request); + io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request); + + io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request); + + io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request); - io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request); + io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request); io.smallrye.mutiny.Multi getContextEvents(context.ContextOuterClass.Empty request); diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java index d3c1b6285..3809f8afb 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java @@ -409,6 +409,15 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } + @Override + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + try { + return delegate.updateOpticalConfig(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { try { @@ -418,6 +427,24 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } + @Override + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + try { + return delegate.deleteOpticalConfig(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + try { + return delegate.deleteOpticalChannel(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { try { @@ -428,7 +455,7 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } @Override - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { try { return delegate.getOpticalLink(request); } catch (UnsupportedOperationException e) { @@ -437,9 +464,27 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } @Override - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + try { + return delegate.deleteOpticalLink(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + try { + return delegate.getOpticalLinkList(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + + @Override + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { try { - return delegate.getFiber(request); + return delegate.deleteServiceConfigRule(request); } catch (UnsupportedOperationException e) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java index b1773578d..00e56c4f4 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java @@ -245,24 +245,49 @@ public class ContextServiceClient implements ContextService, MutinyClient updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return stub.updateOpticalConfig(request); + } + @Override public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return stub.selectOpticalConfig(request); } + @Override + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return stub.deleteOpticalConfig(request); + } + + @Override + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return stub.deleteOpticalChannel(request); + } + @Override public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { return stub.setOpticalLink(request); } @Override - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { return stub.getOpticalLink(request); } @Override - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { - return stub.getFiber(request); + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return stub.deleteOpticalLink(request); + } + + @Override + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + return stub.getOpticalLinkList(request); + } + + @Override + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return stub.deleteServiceConfigRule(request); } @Override diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java index a03f7e949..73a440e7a 100644 --- a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java +++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java @@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; /** */ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class ContextServiceGrpc { private ContextServiceGrpc() { @@ -778,6 +779,21 @@ public final class ContextServiceGrpc { return getSetOpticalConfigMethod; } + private static volatile io.grpc.MethodDescriptor getUpdateOpticalConfigMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "UpdateOpticalConfig", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.OpticalConfigId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getUpdateOpticalConfigMethod() { + io.grpc.MethodDescriptor getUpdateOpticalConfigMethod; + if ((getUpdateOpticalConfigMethod = ContextServiceGrpc.getUpdateOpticalConfigMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getUpdateOpticalConfigMethod = ContextServiceGrpc.getUpdateOpticalConfigMethod) == null) { + ContextServiceGrpc.getUpdateOpticalConfigMethod = getUpdateOpticalConfigMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "UpdateOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UpdateOpticalConfig")).build(); + } + } + } + return getUpdateOpticalConfigMethod; + } + private static volatile io.grpc.MethodDescriptor getSelectOpticalConfigMethod; @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.OpticalConfig.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) @@ -793,6 +809,36 @@ public final class ContextServiceGrpc { return getSelectOpticalConfigMethod; } + private static volatile io.grpc.MethodDescriptor getDeleteOpticalConfigMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalConfigMethod() { + io.grpc.MethodDescriptor getDeleteOpticalConfigMethod; + if ((getDeleteOpticalConfigMethod = ContextServiceGrpc.getDeleteOpticalConfigMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalConfigMethod = ContextServiceGrpc.getDeleteOpticalConfigMethod) == null) { + ContextServiceGrpc.getDeleteOpticalConfigMethod = getDeleteOpticalConfigMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalConfig")).build(); + } + } + } + return getDeleteOpticalConfigMethod; + } + + private static volatile io.grpc.MethodDescriptor getDeleteOpticalChannelMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalChannel", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalChannelMethod() { + io.grpc.MethodDescriptor getDeleteOpticalChannelMethod; + if ((getDeleteOpticalChannelMethod = ContextServiceGrpc.getDeleteOpticalChannelMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalChannelMethod = ContextServiceGrpc.getDeleteOpticalChannelMethod) == null) { + ContextServiceGrpc.getDeleteOpticalChannelMethod = getDeleteOpticalChannelMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalChannel")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalChannel")).build(); + } + } + } + return getDeleteOpticalChannelMethod; + } + private static volatile io.grpc.MethodDescriptor getSetOpticalLinkMethod; @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalLink", requestType = context.ContextOuterClass.OpticalLink.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) @@ -808,34 +854,64 @@ public final class ContextServiceGrpc { return getSetOpticalLinkMethod; } - private static volatile io.grpc.MethodDescriptor getGetOpticalLinkMethod; + private static volatile io.grpc.MethodDescriptor getGetOpticalLinkMethod; - @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.OpticalLinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) - public static io.grpc.MethodDescriptor getGetOpticalLinkMethod() { - io.grpc.MethodDescriptor getGetOpticalLinkMethod; + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetOpticalLinkMethod() { + io.grpc.MethodDescriptor getGetOpticalLinkMethod; if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) { synchronized (ContextServiceGrpc.class) { if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) { - ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build(); + ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build(); } } } return getGetOpticalLinkMethod; } - private static volatile io.grpc.MethodDescriptor getGetFiberMethod; + private static volatile io.grpc.MethodDescriptor getDeleteOpticalLinkMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteOpticalLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteOpticalLinkMethod() { + io.grpc.MethodDescriptor getDeleteOpticalLinkMethod; + if ((getDeleteOpticalLinkMethod = ContextServiceGrpc.getDeleteOpticalLinkMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getDeleteOpticalLinkMethod = ContextServiceGrpc.getDeleteOpticalLinkMethod) == null) { + ContextServiceGrpc.getDeleteOpticalLinkMethod = getDeleteOpticalLinkMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteOpticalLink")).build(); + } + } + } + return getDeleteOpticalLinkMethod; + } + + private static volatile io.grpc.MethodDescriptor getGetOpticalLinkListMethod; + + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLinkList", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.OpticalLinkList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getGetOpticalLinkListMethod() { + io.grpc.MethodDescriptor getGetOpticalLinkListMethod; + if ((getGetOpticalLinkListMethod = ContextServiceGrpc.getGetOpticalLinkListMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getGetOpticalLinkListMethod = ContextServiceGrpc.getGetOpticalLinkListMethod) == null) { + ContextServiceGrpc.getGetOpticalLinkListMethod = getGetOpticalLinkListMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLinkList")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLinkList")).build(); + } + } + } + return getGetOpticalLinkListMethod; + } + + private static volatile io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod; - @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetFiber", requestType = context.ContextOuterClass.FiberId.class, responseType = context.ContextOuterClass.Fiber.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) - public static io.grpc.MethodDescriptor getGetFiberMethod() { - io.grpc.MethodDescriptor getGetFiberMethod; - if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) { + @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteServiceConfigRule", requestType = context.ContextOuterClass.ServiceConfigRule.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod() { + io.grpc.MethodDescriptor getDeleteServiceConfigRuleMethod; + if ((getDeleteServiceConfigRuleMethod = ContextServiceGrpc.getDeleteServiceConfigRuleMethod) == null) { synchronized (ContextServiceGrpc.class) { - if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) { - ContextServiceGrpc.getGetFiberMethod = getGetFiberMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetFiber")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.FiberId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Fiber.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetFiber")).build(); + if ((getDeleteServiceConfigRuleMethod = ContextServiceGrpc.getDeleteServiceConfigRuleMethod) == null) { + ContextServiceGrpc.getDeleteServiceConfigRuleMethod = getDeleteServiceConfigRuleMethod = io.grpc.MethodDescriptor.newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteServiceConfigRule")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceConfigRule.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("DeleteServiceConfigRule")).build(); } } } - return getGetFiberMethod; + return getDeleteServiceConfigRuleMethod; } /** @@ -882,299 +958,299 @@ public final class ContextServiceGrpc { /** */ - public static abstract class ContextServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver); } /** */ - public void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver); } /** */ - public void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver); } /** */ - public void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver responseObserver) { + default void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver); } /** */ - public void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver); } /** */ - public void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver); } /** */ - public void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver); } /** */ - public void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver); } /** */ - public void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { + default void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver); } /** */ - public void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { + default void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver); } /** */ - public void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver responseObserver) { + default void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver); } /** */ - public void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver); } /** */ - public void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver); } /** */ - public void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver); } /** */ - public void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver); } /** */ - public void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver); } /** */ - public void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { + default void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver); } /** */ - public void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver); } /** */ - public void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver); } /** */ - public void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver responseObserver) { + default void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver); } /** */ - public void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver responseObserver) { + default void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver); } /** */ - public void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver); } /** */ - public void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver); } /** */ - public void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + default void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver); } /** */ - public void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver responseObserver) { + default void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver); } /** */ - public void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver); } /** */ - public void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver); } /** */ - public void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver); } /** */ - public void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver); } /** */ - public void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver); } /** */ - public void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { + default void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver); } /** */ - public void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { + default void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver); } /** */ - public void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver); } /** */ - public void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver); } /** */ - public void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver responseObserver) { + default void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver); } /** */ - public void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver); } /** */ - public void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { + default void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver); } /** */ - public void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver); } /** */ - public void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) { + default void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver); } /** */ - public void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) { + default void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver); } /** */ - public void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver); } /** */ - public void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver); } /** */ - public void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver responseObserver) { + default void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver); } /** */ - public void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver); } /** */ - public void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { + default void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver); } /** */ - public void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) { + default void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver); } /** */ - public void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver responseObserver) { + default void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver); } /** */ - public void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) { + default void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver); } /** */ - public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver); } @@ -1183,47 +1259,84 @@ public final class ContextServiceGrpc { * ------------------------------ Experimental ----------------------------- *
*/ - public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + default void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalConfigMethod(), responseObserver); } /** */ - public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + default void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalConfigMethod(), responseObserver); } /** */ - public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + default void updateOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUpdateOpticalConfigMethod(), responseObserver); + } + + /** + */ + default void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectOpticalConfigMethod(), responseObserver); } /** */ - public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { + default void deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalConfigMethod(), responseObserver); + } + + /** + */ + default void deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalChannelMethod(), responseObserver); + } + + /** + */ + default void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalLinkMethod(), responseObserver); } /** */ - public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { + default void getOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkMethod(), responseObserver); } /** */ - public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetFiberMethod(), responseObserver); + default void deleteOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteOpticalLinkMethod(), responseObserver); + } + + /** + */ + default void getOpticalLinkList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkListMethod(), responseObserver); } + /** + */ + default void deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteServiceConfigRuleMethod(), responseObserver); + } + } + + /** + * Base class for the server implementation of the service ContextService. + */ + public static abstract class ContextServiceImplBase implements io.grpc.BindableService, AsyncService { + @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_FIBER))).build(); + return ContextServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service ContextService. */ public static class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -1545,12 +1658,30 @@ public final class ContextServiceGrpc { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void updateOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getUpdateOpticalConfigMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalConfigMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalChannelMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver responseObserver) { @@ -1559,18 +1690,31 @@ public final class ContextServiceGrpc { /** */ - public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver responseObserver) { + public void getOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request, responseObserver); } /** */ - public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request, responseObserver); + public void deleteOpticalLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteOpticalLinkMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void getOpticalLinkList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkListMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request, io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteServiceConfigRuleMethod(), getCallOptions()), request, responseObserver); } } /** + * A stub to allow clients to do synchronous rpc calls to service ContextService. */ public static class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -1892,12 +2036,30 @@ public final class ContextServiceGrpc { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalConfigMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.OpticalConfigId updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getUpdateOpticalConfigMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.OpticalConfig selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectOpticalConfigMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.Empty deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalConfigMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.Empty deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalChannelMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.Empty setOpticalLink(context.ContextOuterClass.OpticalLink request) { @@ -1906,18 +2068,31 @@ public final class ContextServiceGrpc { /** */ - public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.LinkId request) { return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkMethod(), getCallOptions(), request); } /** */ - public context.ContextOuterClass.Fiber getFiber(context.ContextOuterClass.FiberId request) { - return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetFiberMethod(), getCallOptions(), request); + public context.ContextOuterClass.Empty deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteOpticalLinkMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.OpticalLinkList getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkListMethod(), getCallOptions(), request); + } + + /** + */ + public context.ContextOuterClass.Empty deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteServiceConfigRuleMethod(), getCallOptions(), request); } } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextService. */ public static class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -2197,12 +2372,30 @@ public final class ContextServiceGrpc { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getUpdateOpticalConfigMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalConfigMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalChannelMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture setOpticalLink(context.ContextOuterClass.OpticalLink request) { @@ -2211,14 +2404,26 @@ public final class ContextServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public com.google.common.util.concurrent.ListenableFuture getOpticalLink(context.ContextOuterClass.LinkId request) { return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request); } /** */ - public com.google.common.util.concurrent.ListenableFuture getFiber(context.ContextOuterClass.FiberId request) { - return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request); + public com.google.common.util.concurrent.ListenableFuture deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteOpticalLinkMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkListMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteServiceConfigRuleMethod(), getCallOptions()), request); } } @@ -2324,21 +2529,31 @@ public final class ContextServiceGrpc { private static final int METHODID_SET_OPTICAL_CONFIG = 50; - private static final int METHODID_SELECT_OPTICAL_CONFIG = 51; + private static final int METHODID_UPDATE_OPTICAL_CONFIG = 51; + + private static final int METHODID_SELECT_OPTICAL_CONFIG = 52; - private static final int METHODID_SET_OPTICAL_LINK = 52; + private static final int METHODID_DELETE_OPTICAL_CONFIG = 53; - private static final int METHODID_GET_OPTICAL_LINK = 53; + private static final int METHODID_DELETE_OPTICAL_CHANNEL = 54; - private static final int METHODID_GET_FIBER = 54; + private static final int METHODID_SET_OPTICAL_LINK = 55; + + private static final int METHODID_GET_OPTICAL_LINK = 56; + + private static final int METHODID_DELETE_OPTICAL_LINK = 57; + + private static final int METHODID_GET_OPTICAL_LINK_LIST = 58; + + private static final int METHODID_DELETE_SERVICE_CONFIG_RULE = 59; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final ContextServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(ContextServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -2500,17 +2715,32 @@ public final class ContextServiceGrpc { case METHODID_SET_OPTICAL_CONFIG: serviceImpl.setOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_UPDATE_OPTICAL_CONFIG: + serviceImpl.updateOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_SELECT_OPTICAL_CONFIG: serviceImpl.selectOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_DELETE_OPTICAL_CONFIG: + serviceImpl.deleteOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_DELETE_OPTICAL_CHANNEL: + serviceImpl.deleteOpticalChannel((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_SET_OPTICAL_LINK: serviceImpl.setOpticalLink((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_GET_OPTICAL_LINK: - serviceImpl.getOpticalLink((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + serviceImpl.getOpticalLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_DELETE_OPTICAL_LINK: + serviceImpl.deleteOpticalLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_GET_OPTICAL_LINK_LIST: + serviceImpl.getOpticalLinkList((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver) responseObserver); break; - case METHODID_GET_FIBER: - serviceImpl.getFiber((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver) responseObserver); + case METHODID_DELETE_SERVICE_CONFIG_RULE: + serviceImpl.deleteServiceConfigRule((context.ContextOuterClass.ServiceConfigRule) request, (io.grpc.stub.StreamObserver) responseObserver); break; default: throw new AssertionError(); @@ -2527,6 +2757,10 @@ public final class ContextServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_CONFIG))).addMethod(getUpdateOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_UPDATE_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getDeleteOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_CONFIG))).addMethod(getDeleteOpticalChannelMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_CHANNEL))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK))).addMethod(getDeleteOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_OPTICAL_LINK))).addMethod(getGetOpticalLinkListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_OPTICAL_LINK_LIST))).addMethod(getDeleteServiceConfigRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_SERVICE_CONFIG_RULE))).build(); + } + private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { ContextServiceBaseDescriptorSupplier() { @@ -2571,7 +2805,7 @@ public final class ContextServiceGrpc { synchronized (ContextServiceGrpc.class) { result = serviceDescriptor; if (result == null) { - serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getGetFiberMethod()).build(); + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getUpdateOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getDeleteOpticalConfigMethod()).addMethod(getDeleteOpticalChannelMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getDeleteOpticalLinkMethod()).addMethod(getGetOpticalLinkListMethod()).addMethod(getDeleteServiceConfigRuleMethod()).build(); } } } diff --git a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java index c6dbb1e92..b97952a61 100644 --- a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java +++ b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java @@ -216,20 +216,40 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalConfig); } + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::updateOpticalConfig); + } + public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectOpticalConfig); } + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalConfig); + } + + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalChannel); + } + public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalLink); } - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLink); } - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { - return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getFiber); + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteOpticalLink); + } + + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLinkList); + } + + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { + return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteServiceConfigRule); } public io.smallrye.mutiny.Multi getContextEvents(context.ContextOuterClass.Empty request) { @@ -456,19 +476,39 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } + public io.smallrye.mutiny.Uni updateOpticalConfig(context.ContextOuterClass.OpticalConfig request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + public io.smallrye.mutiny.Uni selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } + public io.smallrye.mutiny.Uni deleteOpticalConfig(context.ContextOuterClass.OpticalConfigId request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni deleteOpticalChannel(context.ContextOuterClass.OpticalConfig request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + public io.smallrye.mutiny.Uni setOpticalLink(context.ContextOuterClass.OpticalLink request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } - public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.OpticalLinkId request) { + public io.smallrye.mutiny.Uni getOpticalLink(context.ContextOuterClass.LinkId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } - public io.smallrye.mutiny.Uni getFiber(context.ContextOuterClass.FiberId request) { + public io.smallrye.mutiny.Uni deleteOpticalLink(context.ContextOuterClass.LinkId request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni getOpticalLinkList(context.ContextOuterClass.Empty request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni deleteServiceConfigRule(context.ContextOuterClass.ServiceConfigRule request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -502,7 +542,7 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetFiberMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_FIBER, compression))).build(); + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getUpdateOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_UPDATE_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalChannelMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_CHANNEL, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getDeleteOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkListMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_GET_OPTICAL_LINK_LIST, compression))).addMethod(context.ContextServiceGrpc.getDeleteServiceConfigRuleMethod(), asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_SERVICE_CONFIG_RULE, compression))).build(); } } @@ -608,13 +648,23 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp private static final int METHODID_SET_OPTICAL_CONFIG = 50; - private static final int METHODID_SELECT_OPTICAL_CONFIG = 51; + private static final int METHODID_UPDATE_OPTICAL_CONFIG = 51; + + private static final int METHODID_SELECT_OPTICAL_CONFIG = 52; + + private static final int METHODID_DELETE_OPTICAL_CONFIG = 53; - private static final int METHODID_SET_OPTICAL_LINK = 52; + private static final int METHODID_DELETE_OPTICAL_CHANNEL = 54; - private static final int METHODID_GET_OPTICAL_LINK = 53; + private static final int METHODID_SET_OPTICAL_LINK = 55; - private static final int METHODID_GET_FIBER = 54; + private static final int METHODID_GET_OPTICAL_LINK = 56; + + private static final int METHODID_DELETE_OPTICAL_LINK = 57; + + private static final int METHODID_GET_OPTICAL_LINK_LIST = 58; + + private static final int METHODID_DELETE_SERVICE_CONFIG_RULE = 59; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { @@ -787,17 +837,32 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp case METHODID_SET_OPTICAL_CONFIG: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::setOpticalConfig); break; + case METHODID_UPDATE_OPTICAL_CONFIG: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::updateOpticalConfig); + break; case METHODID_SELECT_OPTICAL_CONFIG: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::selectOpticalConfig); break; + case METHODID_DELETE_OPTICAL_CONFIG: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalConfig); + break; + case METHODID_DELETE_OPTICAL_CHANNEL: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalChannel); + break; case METHODID_SET_OPTICAL_LINK: io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::setOpticalLink); break; case METHODID_GET_OPTICAL_LINK: - io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLink); + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLink); + break; + case METHODID_DELETE_OPTICAL_LINK: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteOpticalLink); + break; + case METHODID_GET_OPTICAL_LINK_LIST: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getOpticalLinkList); break; - case METHODID_GET_FIBER: - io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getFiber); + case METHODID_DELETE_SERVICE_CONFIG_RULE: + io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceConfigRule) request, (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::deleteServiceConfigRule); break; default: throw new java.lang.AssertionError(); diff --git a/src/ztp/target/generated-sources/grpc/device/Device.java b/src/ztp/target/generated-sources/grpc/device/Device.java index 93bd49040..53ac328d6 100644 --- a/src/ztp/target/generated-sources/grpc/device/Device.java +++ b/src/ztp/target/generated-sources/grpc/device/Device.java @@ -18,35 +18,59 @@ public final class Device { com.google.protobuf.MessageOrBuilder { /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ boolean hasKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ monitoring.Monitoring.KpiId getKpiId(); /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; */ monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ boolean hasKpiDescriptor(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ monitoring.Monitoring.KpiDescriptor getKpiDescriptor(); /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder(); @@ -86,80 +110,6 @@ public final class Device { return new MonitoringSettings(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private MonitoringSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - monitoring.Monitoring.KpiDescriptor.Builder subBuilder = null; - if (kpiDescriptor_ != null) { - subBuilder = kpiDescriptor_.toBuilder(); - } - kpiDescriptor_ = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiDescriptor_); - kpiDescriptor_ = subBuilder.buildPartial(); - } - break; - } - case 29: - { - samplingDurationS_ = input.readFloat(); - break; - } - case 37: - { - samplingIntervalS_ = input.readFloat(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return device.Device.internal_static_device_MonitoringSettings_descriptor; } @@ -174,6 +124,10 @@ public final class Device { private monitoring.Monitoring.KpiId kpiId_; /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ @@ -183,6 +137,10 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ @@ -192,11 +150,15 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiId"
+         * 
+ * * .monitoring.KpiId kpi_id = 1; */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2; @@ -204,6 +166,10 @@ public final class Device { private monitoring.Monitoring.KpiDescriptor kpiDescriptor_; /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ @@ -213,6 +179,10 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ @@ -222,16 +192,20 @@ public final class Device { } /** + *
+         * to be migrated to: "kpi_manager.KpiDescriptor"
+         * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ @java.lang.Override public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() { - return getKpiDescriptor(); + return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_; } public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3; - private float samplingDurationS_; + private float samplingDurationS_ = 0F; /** * float sampling_duration_s = 3; @@ -244,7 +218,7 @@ public final class Device { public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4; - private float samplingIntervalS_; + private float samplingIntervalS_ = 0F; /** * float sampling_interval_s = 4; @@ -276,13 +250,13 @@ public final class Device { if (kpiDescriptor_ != null) { output.writeMessage(2, getKpiDescriptor()); } - if (samplingDurationS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) { output.writeFloat(3, samplingDurationS_); } - if (samplingIntervalS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) { output.writeFloat(4, samplingIntervalS_); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -297,13 +271,13 @@ public final class Device { if (kpiDescriptor_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiDescriptor()); } - if (samplingDurationS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_); } - if (samplingIntervalS_ != 0F) { + if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) { size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -333,7 +307,7 @@ public final class Device { return false; if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS())) return false; - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -357,7 +331,7 @@ public final class Device { hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS()); hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS()); - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -451,32 +425,24 @@ public final class Device { // Construct using device.Device.MonitoringSettings.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = null; - } else { - kpiId_ = null; + bitField0_ = 0; + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } - if (kpiDescriptorBuilder_ == null) { - kpiDescriptor_ = null; - } else { - kpiDescriptor_ = null; + kpiDescriptor_ = null; + if (kpiDescriptorBuilder_ != null) { + kpiDescriptorBuilder_.dispose(); kpiDescriptorBuilder_ = null; } samplingDurationS_ = 0F; @@ -506,50 +472,27 @@ public final class Device { @java.lang.Override public device.Device.MonitoringSettings buildPartial() { device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this); - if (kpiIdBuilder_ == null) { - result.kpiId_ = kpiId_; - } else { - result.kpiId_ = kpiIdBuilder_.build(); - } - if (kpiDescriptorBuilder_ == null) { - result.kpiDescriptor_ = kpiDescriptor_; - } else { - result.kpiDescriptor_ = kpiDescriptorBuilder_.build(); + if (bitField0_ != 0) { + buildPartial0(result); } - result.samplingDurationS_ = samplingDurationS_; - result.samplingIntervalS_ = samplingIntervalS_; onBuilt(); return result; } - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); + private void buildPartial0(device.Device.MonitoringSettings result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.kpiDescriptor_ = kpiDescriptorBuilder_ == null ? kpiDescriptor_ : kpiDescriptorBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.samplingDurationS_ = samplingDurationS_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.samplingIntervalS_ = samplingIntervalS_; + } } @java.lang.Override @@ -577,7 +520,7 @@ public final class Device { if (other.getSamplingIntervalS() != 0F) { setSamplingIntervalS(other.getSamplingIntervalS()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -589,33 +532,89 @@ public final class Device { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - device.Device.MonitoringSettings parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + input.readMessage(getKpiDescriptorFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 29: + { + samplingDurationS_ = input.readFloat(); + bitField0_ |= 0x00000004; + break; + } + // case 29 + case 37: + { + samplingIntervalS_ = input.readFloat(); + bitField0_ |= 0x00000008; + break; + } + // case 37 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (device.Device.MonitoringSettings) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } + private int bitField0_; + private monitoring.Monitoring.KpiId kpiId_; private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_; /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; * @return Whether the kpiId field is set. */ public boolean hasKpiId() { - return kpiIdBuilder_ != null || kpiId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; * @return The kpiId. */ @@ -628,6 +627,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId value) { @@ -636,66 +639,90 @@ public final class Device { throw new NullPointerException(); } kpiId_ = value; - onChanged(); } else { kpiIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { kpiId_ = builderForValue.build(); - onChanged(); } else { kpiIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - if (kpiId_ != null) { - kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) { + getKpiIdBuilder().mergeFrom(value); } else { kpiId_ = value; } - onChanged(); } else { kpiIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = null; - onChanged(); - } else { - kpiId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getKpiIdFieldBuilder().getBuilder(); } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { @@ -707,6 +734,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiId"
+             * 
+ * * .monitoring.KpiId kpi_id = 1; */ private com.google.protobuf.SingleFieldBuilderV3 getKpiIdFieldBuilder() { @@ -722,14 +753,22 @@ public final class Device { private com.google.protobuf.SingleFieldBuilderV3 kpiDescriptorBuilder_; /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return Whether the kpiDescriptor field is set. */ public boolean hasKpiDescriptor() { - return kpiDescriptorBuilder_ != null || kpiDescriptor_ != null; + return ((bitField0_ & 0x00000002) != 0); } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; * @return The kpiDescriptor. */ @@ -742,6 +781,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) { @@ -750,66 +793,90 @@ public final class Device { throw new NullPointerException(); } kpiDescriptor_ = value; - onChanged(); } else { kpiDescriptorBuilder_.setMessage(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) { if (kpiDescriptorBuilder_ == null) { kpiDescriptor_ = builderForValue.build(); - onChanged(); } else { kpiDescriptorBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) { if (kpiDescriptorBuilder_ == null) { - if (kpiDescriptor_ != null) { - kpiDescriptor_ = monitoring.Monitoring.KpiDescriptor.newBuilder(kpiDescriptor_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000002) != 0) && kpiDescriptor_ != null && kpiDescriptor_ != monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) { + getKpiDescriptorBuilder().mergeFrom(value); } else { kpiDescriptor_ = value; } - onChanged(); } else { kpiDescriptorBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000002; + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public Builder clearKpiDescriptor() { - if (kpiDescriptorBuilder_ == null) { - kpiDescriptor_ = null; - onChanged(); - } else { - kpiDescriptor_ = null; + bitField0_ = (bitField0_ & ~0x00000002); + kpiDescriptor_ = null; + if (kpiDescriptorBuilder_ != null) { + kpiDescriptorBuilder_.dispose(); kpiDescriptorBuilder_ = null; } + onChanged(); return this; } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() { + bitField0_ |= 0x00000002; onChanged(); return getKpiDescriptorFieldBuilder().getBuilder(); } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() { @@ -821,6 +888,10 @@ public final class Device { } /** + *
+             * to be migrated to: "kpi_manager.KpiDescriptor"
+             * 
+ * * .monitoring.KpiDescriptor kpi_descriptor = 2; */ private com.google.protobuf.SingleFieldBuilderV3 getKpiDescriptorFieldBuilder() { @@ -849,6 +920,7 @@ public final class Device { */ public Builder setSamplingDurationS(float value) { samplingDurationS_ = value; + bitField0_ |= 0x00000004; onChanged(); return this; } @@ -858,6 +930,7 @@ public final class Device { * @return This builder for chaining. */ public Builder clearSamplingDurationS() { + bitField0_ = (bitField0_ & ~0x00000004); samplingDurationS_ = 0F; onChanged(); return this; @@ -881,6 +954,7 @@ public final class Device { */ public Builder setSamplingIntervalS(float value) { samplingIntervalS_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -890,6 +964,7 @@ public final class Device { * @return This builder for chaining. */ public Builder clearSamplingIntervalS() { + bitField0_ = (bitField0_ & ~0x00000008); samplingIntervalS_ = 0F; onChanged(); return this; @@ -922,7 +997,17 @@ public final class Device { @java.lang.Override public MonitoringSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new MonitoringSettings(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java index a6886d8d6..7e0cf9a8b 100644 --- a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java +++ b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java @@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName; /** */ -@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: device.proto") +@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: device.proto") +@io.grpc.stub.annotations.GrpcGenerated public final class DeviceServiceGrpc { private DeviceServiceGrpc() { @@ -132,45 +133,52 @@ public final class DeviceServiceGrpc { /** */ - public static abstract class DeviceServiceImplBase implements io.grpc.BindableService { + public interface AsyncService { /** */ - public void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { + default void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver); } /** */ - public void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { + default void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver); } /** */ - public void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver); } /** */ - public void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { + default void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver); } /** */ - public void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver responseObserver) { + default void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver); } + } + + /** + * Base class for the server implementation of the service DeviceService. + */ + public static abstract class DeviceServiceImplBase implements io.grpc.BindableService, AsyncService { @java.lang.Override public io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_MONITOR_DEVICE_KPI))).build(); + return DeviceServiceGrpc.bindService(this); } } /** + * A stub to allow clients to do asynchronous rpc calls to service DeviceService. */ public static class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub { @@ -215,6 +223,7 @@ public final class DeviceServiceGrpc { } /** + * A stub to allow clients to do synchronous rpc calls to service DeviceService. */ public static class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub { @@ -259,6 +268,7 @@ public final class DeviceServiceGrpc { } /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service DeviceService. */ public static class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub { @@ -314,11 +324,11 @@ public final class DeviceServiceGrpc { private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final DeviceServiceImplBase serviceImpl; + private final AsyncService serviceImpl; private final int methodId; - MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId) { + MethodHandlers(AsyncService serviceImpl, int methodId) { this.serviceImpl = serviceImpl; this.methodId = methodId; } @@ -357,6 +367,10 @@ public final class DeviceServiceGrpc { } } + public static io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_MONITOR_DEVICE_KPI))).build(); + } + private static abstract class DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { DeviceServiceBaseDescriptorSupplier() { diff --git a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java index 4c80f4a06..2f98ce3eb 100644 --- a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java +++ b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java @@ -211,160 +211,6 @@ public final class Monitoring { return new KpiDescriptor(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private KpiDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - int mutable_bitField0_ = 0; - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 18: - { - java.lang.String s = input.readStringRequireUtf8(); - kpiDescription_ = s; - break; - } - case 26: - { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiIdList_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - kpiIdList_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry)); - break; - } - case 32: - { - int rawValue = input.readEnum(); - kpiSampleType_ = rawValue; - break; - } - case 42: - { - context.ContextOuterClass.DeviceId.Builder subBuilder = null; - if (deviceId_ != null) { - subBuilder = deviceId_.toBuilder(); - } - deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(deviceId_); - deviceId_ = subBuilder.buildPartial(); - } - break; - } - case 50: - { - context.ContextOuterClass.EndPointId.Builder subBuilder = null; - if (endpointId_ != null) { - subBuilder = endpointId_.toBuilder(); - } - endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(endpointId_); - endpointId_ = subBuilder.buildPartial(); - } - break; - } - case 58: - { - context.ContextOuterClass.ServiceId.Builder subBuilder = null; - if (serviceId_ != null) { - subBuilder = serviceId_.toBuilder(); - } - serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(serviceId_); - serviceId_ = subBuilder.buildPartial(); - } - break; - } - case 66: - { - context.ContextOuterClass.SliceId.Builder subBuilder = null; - if (sliceId_ != null) { - subBuilder = sliceId_.toBuilder(); - } - sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(sliceId_); - sliceId_ = subBuilder.buildPartial(); - } - break; - } - case 74: - { - context.ContextOuterClass.ConnectionId.Builder subBuilder = null; - if (connectionId_ != null) { - subBuilder = connectionId_.toBuilder(); - } - connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(connectionId_); - connectionId_ = subBuilder.buildPartial(); - } - break; - } - case 82: - { - context.ContextOuterClass.LinkId.Builder subBuilder = null; - if (linkId_ != null) { - subBuilder = linkId_.toBuilder(); - } - linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(linkId_); - linkId_ = subBuilder.buildPartial(); - } - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor; } @@ -401,12 +247,13 @@ public final class Monitoring { */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2; - private volatile java.lang.Object kpiDescription_; + @SuppressWarnings("serial") + private volatile java.lang.Object kpiDescription_ = ""; /** * string kpi_description = 2; @@ -443,6 +290,7 @@ public final class Monitoring { public static final int KPI_ID_LIST_FIELD_NUMBER = 3; + @SuppressWarnings("serial") private java.util.List kpiIdList_; /** @@ -487,7 +335,7 @@ public final class Monitoring { public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4; - private int kpiSampleType_; + private int kpiSampleType_ = 0; /** * .kpi_sample_types.KpiSampleType kpi_sample_type = 4; @@ -504,8 +352,7 @@ public final class Monitoring { */ @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() { - @SuppressWarnings("deprecation") - kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_); + kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_); return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result; } @@ -536,7 +383,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() { - return getDeviceId(); + return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_; } public static final int ENDPOINT_ID_FIELD_NUMBER = 6; @@ -566,7 +413,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() { - return getEndpointId(); + return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_; } public static final int SERVICE_ID_FIELD_NUMBER = 7; @@ -596,7 +443,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() { - return getServiceId(); + return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_; } public static final int SLICE_ID_FIELD_NUMBER = 8; @@ -626,7 +473,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() { - return getSliceId(); + return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_; } public static final int CONNECTION_ID_FIELD_NUMBER = 9; @@ -656,7 +503,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() { - return getConnectionId(); + return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_; } public static final int LINK_ID_FIELD_NUMBER = 10; @@ -686,7 +533,7 @@ public final class Monitoring { */ @java.lang.Override public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() { - return getLinkId(); + return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_; } private byte memoizedIsInitialized = -1; @@ -707,7 +554,7 @@ public final class Monitoring { if (kpiId_ != null) { output.writeMessage(1, getKpiId()); } - if (!getKpiDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_); } for (int i = 0; i < kpiIdList_.size(); i++) { @@ -734,7 +581,7 @@ public final class Monitoring { if (linkId_ != null) { output.writeMessage(10, getLinkId()); } - unknownFields.writeTo(output); + getUnknownFields().writeTo(output); } @java.lang.Override @@ -746,7 +593,7 @@ public final class Monitoring { if (kpiId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId()); } - if (!getKpiDescriptionBytes().isEmpty()) { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_); } for (int i = 0; i < kpiIdList_.size(); i++) { @@ -773,7 +620,7 @@ public final class Monitoring { if (linkId_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getLinkId()); } - size += unknownFields.getSerializedSize(); + size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @@ -835,7 +682,7 @@ public final class Monitoring { if (!getLinkId().equals(other.getLinkId())) return false; } - if (!unknownFields.equals(other.unknownFields)) + if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -883,7 +730,7 @@ public final class Monitoring { hash = (37 * hash) + LINK_ID_FIELD_NUMBER; hash = (53 * hash) + getLinkId().hashCode(); } - hash = (29 * hash) + unknownFields.hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } @@ -977,71 +824,58 @@ public final class Monitoring { // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder() private Builder() { - maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { - getKpiIdListFieldBuilder(); - } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = null; - } else { - kpiId_ = null; + bitField0_ = 0; + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } kpiDescription_ = ""; if (kpiIdListBuilder_ == null) { kpiIdList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); } else { + kpiIdList_ = null; kpiIdListBuilder_.clear(); } + bitField0_ = (bitField0_ & ~0x00000004); kpiSampleType_ = 0; - if (deviceIdBuilder_ == null) { - deviceId_ = null; - } else { - deviceId_ = null; + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } - if (endpointIdBuilder_ == null) { - endpointId_ = null; - } else { - endpointId_ = null; + endpointId_ = null; + if (endpointIdBuilder_ != null) { + endpointIdBuilder_.dispose(); endpointIdBuilder_ = null; } - if (serviceIdBuilder_ == null) { - serviceId_ = null; - } else { - serviceId_ = null; + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); serviceIdBuilder_ = null; } - if (sliceIdBuilder_ == null) { - sliceId_ = null; - } else { - sliceId_ = null; + sliceId_ = null; + if (sliceIdBuilder_ != null) { + sliceIdBuilder_.dispose(); sliceIdBuilder_ = null; } - if (connectionIdBuilder_ == null) { - connectionId_ = null; - } else { - connectionId_ = null; + connectionId_ = null; + if (connectionIdBuilder_ != null) { + connectionIdBuilder_.dispose(); connectionIdBuilder_ = null; } - if (linkIdBuilder_ == null) { - linkId_ = null; - } else { - linkId_ = null; + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); linkIdBuilder_ = null; } return this; @@ -1069,85 +903,55 @@ public final class Monitoring { @java.lang.Override public monitoring.Monitoring.KpiDescriptor buildPartial() { monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this); - int from_bitField0_ = bitField0_; - if (kpiIdBuilder_ == null) { - result.kpiId_ = kpiId_; - } else { - result.kpiId_ = kpiIdBuilder_.build(); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); } - result.kpiDescription_ = kpiDescription_; + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptor result) { if (kpiIdListBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { + if (((bitField0_ & 0x00000004) != 0)) { kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } result.kpiIdList_ = kpiIdList_; } else { result.kpiIdList_ = kpiIdListBuilder_.build(); } - result.kpiSampleType_ = kpiSampleType_; - if (deviceIdBuilder_ == null) { - result.deviceId_ = deviceId_; - } else { - result.deviceId_ = deviceIdBuilder_.build(); + } + + private void buildPartial0(monitoring.Monitoring.KpiDescriptor result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build(); } - if (endpointIdBuilder_ == null) { - result.endpointId_ = endpointId_; - } else { - result.endpointId_ = endpointIdBuilder_.build(); + if (((from_bitField0_ & 0x00000002) != 0)) { + result.kpiDescription_ = kpiDescription_; } - if (serviceIdBuilder_ == null) { - result.serviceId_ = serviceId_; - } else { - result.serviceId_ = serviceIdBuilder_.build(); + if (((from_bitField0_ & 0x00000008) != 0)) { + result.kpiSampleType_ = kpiSampleType_; } - if (sliceIdBuilder_ == null) { - result.sliceId_ = sliceId_; - } else { - result.sliceId_ = sliceIdBuilder_.build(); + if (((from_bitField0_ & 0x00000010) != 0)) { + result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build(); } - if (connectionIdBuilder_ == null) { - result.connectionId_ = connectionId_; - } else { - result.connectionId_ = connectionIdBuilder_.build(); + if (((from_bitField0_ & 0x00000020) != 0)) { + result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build(); } - if (linkIdBuilder_ == null) { - result.linkId_ = linkId_; - } else { - result.linkId_ = linkIdBuilder_.build(); + if (((from_bitField0_ & 0x00000040) != 0)) { + result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build(); + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build(); } - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - - @java.lang.Override - public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.setField(field, value); - } - - @java.lang.Override - public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - - @java.lang.Override - public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - - @java.lang.Override - public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - - @java.lang.Override - public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { - return super.addRepeatedField(field, value); } @java.lang.Override @@ -1168,13 +972,14 @@ public final class Monitoring { } if (!other.getKpiDescription().isEmpty()) { kpiDescription_ = other.kpiDescription_; + bitField0_ |= 0x00000002; onChanged(); } if (kpiIdListBuilder_ == null) { if (!other.kpiIdList_.isEmpty()) { if (kpiIdList_.isEmpty()) { kpiIdList_ = other.kpiIdList_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureKpiIdListIsMutable(); kpiIdList_.addAll(other.kpiIdList_); @@ -1187,7 +992,7 @@ public final class Monitoring { kpiIdListBuilder_.dispose(); kpiIdListBuilder_ = null; kpiIdList_ = other.kpiIdList_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); kpiIdListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdListFieldBuilder() : null; } else { kpiIdListBuilder_.addAllMessages(other.kpiIdList_); @@ -1215,7 +1020,7 @@ public final class Monitoring { if (other.hasLinkId()) { mergeLinkId(other.getLinkId()); } - this.mergeUnknownFields(other.unknownFields); + this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @@ -1227,17 +1032,110 @@ public final class Monitoring { @java.lang.Override public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - monitoring.Monitoring.KpiDescriptor parsedMessage = null; + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch(tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } + // case 10 + case 18: + { + kpiDescription_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } + // case 18 + case 26: + { + monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); + if (kpiIdListBuilder_ == null) { + ensureKpiIdListIsMutable(); + kpiIdList_.add(m); + } else { + kpiIdListBuilder_.addMessage(m); + } + break; + } + // case 26 + case 32: + { + kpiSampleType_ = input.readEnum(); + bitField0_ |= 0x00000008; + break; + } + // case 32 + case 42: + { + input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000010; + break; + } + // case 42 + case 50: + { + input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000020; + break; + } + // case 50 + case 58: + { + input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000040; + break; + } + // case 58 + case 66: + { + input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000080; + break; + } + // case 66 + case 74: + { + input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000100; + break; + } + // case 74 + case 82: + { + input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000200; + break; + } + // case 82 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + // was an endgroup tag + done = true; + } + break; + } + } + // switch (tag) + } + // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (monitoring.Monitoring.KpiDescriptor) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } + onChanged(); } + // finally return this; } @@ -1252,7 +1150,7 @@ public final class Monitoring { * @return Whether the kpiId field is set. */ public boolean hasKpiId() { - return kpiIdBuilder_ != null || kpiId_ != null; + return ((bitField0_ & 0x00000001) != 0); } /** @@ -1276,10 +1174,11 @@ public final class Monitoring { throw new NullPointerException(); } kpiId_ = value; - onChanged(); } else { kpiIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1289,10 +1188,11 @@ public final class Monitoring { public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { kpiId_ = builderForValue.build(); - onChanged(); } else { kpiIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1301,15 +1201,16 @@ public final class Monitoring { */ public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - if (kpiId_ != null) { - kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) { + getKpiIdBuilder().mergeFrom(value); } else { kpiId_ = value; } - onChanged(); } else { kpiIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000001; + onChanged(); return this; } @@ -1317,13 +1218,13 @@ public final class Monitoring { * .monitoring.KpiId kpi_id = 1; */ public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = null; - onChanged(); - } else { - kpiId_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; + if (kpiIdBuilder_ != null) { + kpiIdBuilder_.dispose(); kpiIdBuilder_ = null; } + onChanged(); return this; } @@ -1331,6 +1232,7 @@ public final class Monitoring { * .monitoring.KpiId kpi_id = 1; */ public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + bitField0_ |= 0x00000001; onChanged(); return getKpiIdFieldBuilder().getBuilder(); } @@ -1400,6 +1302,7 @@ public final class Monitoring { throw new NullPointerException(); } kpiDescription_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1410,6 +1313,7 @@ public final class Monitoring { */ public Builder clearKpiDescription() { kpiDescription_ = getDefaultInstance().getKpiDescription(); + bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } @@ -1425,6 +1329,7 @@ public final class Monitoring { } checkByteStringIsUtf8(value); kpiDescription_ = value; + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1432,9 +1337,9 @@ public final class Monitoring { private java.util.List kpiIdList_ = java.util.Collections.emptyList(); private void ensureKpiIdListIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!((bitField0_ & 0x00000004) != 0)) { kpiIdList_ = new java.util.ArrayList(kpiIdList_); - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000004; } } @@ -1586,7 +1491,7 @@ public final class Monitoring { public Builder clearKpiIdList() { if (kpiIdListBuilder_ == null) { kpiIdList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000004); onChanged(); } else { kpiIdListBuilder_.clear(); @@ -1660,7 +1565,7 @@ public final class Monitoring { private com.google.protobuf.RepeatedFieldBuilderV3 getKpiIdListFieldBuilder() { if (kpiIdListBuilder_ == null) { - kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(kpiIdList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(kpiIdList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean()); kpiIdList_ = null; } return kpiIdListBuilder_; @@ -1684,6 +1589,7 @@ public final class Monitoring { */ public Builder setKpiSampleTypeValue(int value) { kpiSampleType_ = value; + bitField0_ |= 0x00000008; onChanged(); return this; } @@ -1694,8 +1600,7 @@ public final class Monitoring { */ @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() { - @SuppressWarnings("deprecation") - kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_); + kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_); return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result; } @@ -1708,6 +1613,7 @@ public final class Monitoring { if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000008; kpiSampleType_ = value.getNumber(); onChanged(); return this; @@ -1718,6 +1624,7 @@ public final class Monitoring { * @return This builder for chaining. */ public Builder clearKpiSampleType() { + bitField0_ = (bitField0_ & ~0x00000008); kpiSampleType_ = 0; onChanged(); return this; @@ -1732,7 +1639,7 @@ public final class Monitoring { * @return Whether the deviceId field is set. */ public boolean hasDeviceId() { - return deviceIdBuilder_ != null || deviceId_ != null; + return ((bitField0_ & 0x00000010) != 0); } /** @@ -1756,10 +1663,11 @@ public final class Monitoring { throw new NullPointerException(); } deviceId_ = value; - onChanged(); } else { deviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1769,10 +1677,11 @@ public final class Monitoring { public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) { if (deviceIdBuilder_ == null) { deviceId_ = builderForValue.build(); - onChanged(); } else { deviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1781,15 +1690,16 @@ public final class Monitoring { */ public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) { if (deviceIdBuilder_ == null) { - if (deviceId_ != null) { - deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000010) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) { + getDeviceIdBuilder().mergeFrom(value); } else { deviceId_ = value; } - onChanged(); } else { deviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000010; + onChanged(); return this; } @@ -1797,13 +1707,13 @@ public final class Monitoring { * .context.DeviceId device_id = 5; */ public Builder clearDeviceId() { - if (deviceIdBuilder_ == null) { - deviceId_ = null; - onChanged(); - } else { - deviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000010); + deviceId_ = null; + if (deviceIdBuilder_ != null) { + deviceIdBuilder_.dispose(); deviceIdBuilder_ = null; } + onChanged(); return this; } @@ -1811,6 +1721,7 @@ public final class Monitoring { * .context.DeviceId device_id = 5; */ public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() { + bitField0_ |= 0x00000010; onChanged(); return getDeviceIdFieldBuilder().getBuilder(); } @@ -1846,7 +1757,7 @@ public final class Monitoring { * @return Whether the endpointId field is set. */ public boolean hasEndpointId() { - return endpointIdBuilder_ != null || endpointId_ != null; + return ((bitField0_ & 0x00000020) != 0); } /** @@ -1870,10 +1781,11 @@ public final class Monitoring { throw new NullPointerException(); } endpointId_ = value; - onChanged(); } else { endpointIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1883,10 +1795,11 @@ public final class Monitoring { public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) { if (endpointIdBuilder_ == null) { endpointId_ = builderForValue.build(); - onChanged(); } else { endpointIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1895,15 +1808,16 @@ public final class Monitoring { */ public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) { if (endpointIdBuilder_ == null) { - if (endpointId_ != null) { - endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000020) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) { + getEndpointIdBuilder().mergeFrom(value); } else { endpointId_ = value; } - onChanged(); } else { endpointIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000020; + onChanged(); return this; } @@ -1911,13 +1825,13 @@ public final class Monitoring { * .context.EndPointId endpoint_id = 6; */ public Builder clearEndpointId() { - if (endpointIdBuilder_ == null) { - endpointId_ = null; - onChanged(); - } else { - endpointId_ = null; + bitField0_ = (bitField0_ & ~0x00000020); + endpointId_ = null; + if (endpointIdBuilder_ != null) { + endpointIdBuilder_.dispose(); endpointIdBuilder_ = null; } + onChanged(); return this; } @@ -1925,6 +1839,7 @@ public final class Monitoring { * .context.EndPointId endpoint_id = 6; */ public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() { + bitField0_ |= 0x00000020; onChanged(); return getEndpointIdFieldBuilder().getBuilder(); } @@ -1960,7 +1875,7 @@ public final class Monitoring { * @return Whether the serviceId field is set. */ public boolean hasServiceId() { - return serviceIdBuilder_ != null || serviceId_ != null; + return ((bitField0_ & 0x00000040) != 0); } /** @@ -1984,10 +1899,11 @@ public final class Monitoring { throw new NullPointerException(); } serviceId_ = value; - onChanged(); } else { serviceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -1997,10 +1913,11 @@ public final class Monitoring { public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) { if (serviceIdBuilder_ == null) { serviceId_ = builderForValue.build(); - onChanged(); } else { serviceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -2009,15 +1926,16 @@ public final class Monitoring { */ public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) { if (serviceIdBuilder_ == null) { - if (serviceId_ != null) { - serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000040) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) { + getServiceIdBuilder().mergeFrom(value); } else { serviceId_ = value; } - onChanged(); } else { serviceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000040; + onChanged(); return this; } @@ -2025,13 +1943,13 @@ public final class Monitoring { * .context.ServiceId service_id = 7; */ public Builder clearServiceId() { - if (serviceIdBuilder_ == null) { - serviceId_ = null; - onChanged(); - } else { - serviceId_ = null; + bitField0_ = (bitField0_ & ~0x00000040); + serviceId_ = null; + if (serviceIdBuilder_ != null) { + serviceIdBuilder_.dispose(); serviceIdBuilder_ = null; } + onChanged(); return this; } @@ -2039,6 +1957,7 @@ public final class Monitoring { * .context.ServiceId service_id = 7; */ public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() { + bitField0_ |= 0x00000040; onChanged(); return getServiceIdFieldBuilder().getBuilder(); } @@ -2074,7 +1993,7 @@ public final class Monitoring { * @return Whether the sliceId field is set. */ public boolean hasSliceId() { - return sliceIdBuilder_ != null || sliceId_ != null; + return ((bitField0_ & 0x00000080) != 0); } /** @@ -2098,10 +2017,11 @@ public final class Monitoring { throw new NullPointerException(); } sliceId_ = value; - onChanged(); } else { sliceIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2111,10 +2031,11 @@ public final class Monitoring { public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) { if (sliceIdBuilder_ == null) { sliceId_ = builderForValue.build(); - onChanged(); } else { sliceIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2123,15 +2044,16 @@ public final class Monitoring { */ public Builder mergeSliceId(context.ContextOuterClass.SliceId value) { if (sliceIdBuilder_ == null) { - if (sliceId_ != null) { - sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000080) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) { + getSliceIdBuilder().mergeFrom(value); } else { sliceId_ = value; } - onChanged(); } else { sliceIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000080; + onChanged(); return this; } @@ -2139,13 +2061,13 @@ public final class Monitoring { * .context.SliceId slice_id = 8; */ public Builder clearSliceId() { - if (sliceIdBuilder_ == null) { - sliceId_ = null; - onChanged(); - } else { - sliceId_ = null; + bitField0_ = (bitField0_ & ~0x00000080); + sliceId_ = null; + if (sliceIdBuilder_ != null) { + sliceIdBuilder_.dispose(); sliceIdBuilder_ = null; } + onChanged(); return this; } @@ -2153,6 +2075,7 @@ public final class Monitoring { * .context.SliceId slice_id = 8; */ public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() { + bitField0_ |= 0x00000080; onChanged(); return getSliceIdFieldBuilder().getBuilder(); } @@ -2188,7 +2111,7 @@ public final class Monitoring { * @return Whether the connectionId field is set. */ public boolean hasConnectionId() { - return connectionIdBuilder_ != null || connectionId_ != null; + return ((bitField0_ & 0x00000100) != 0); } /** @@ -2212,10 +2135,11 @@ public final class Monitoring { throw new NullPointerException(); } connectionId_ = value; - onChanged(); } else { connectionIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2225,10 +2149,11 @@ public final class Monitoring { public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) { if (connectionIdBuilder_ == null) { connectionId_ = builderForValue.build(); - onChanged(); } else { connectionIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2237,15 +2162,16 @@ public final class Monitoring { */ public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) { if (connectionIdBuilder_ == null) { - if (connectionId_ != null) { - connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000100) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) { + getConnectionIdBuilder().mergeFrom(value); } else { connectionId_ = value; } - onChanged(); } else { connectionIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000100; + onChanged(); return this; } @@ -2253,13 +2179,13 @@ public final class Monitoring { * .context.ConnectionId connection_id = 9; */ public Builder clearConnectionId() { - if (connectionIdBuilder_ == null) { - connectionId_ = null; - onChanged(); - } else { - connectionId_ = null; + bitField0_ = (bitField0_ & ~0x00000100); + connectionId_ = null; + if (connectionIdBuilder_ != null) { + connectionIdBuilder_.dispose(); connectionIdBuilder_ = null; } + onChanged(); return this; } @@ -2267,6 +2193,7 @@ public final class Monitoring { * .context.ConnectionId connection_id = 9; */ public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() { + bitField0_ |= 0x00000100; onChanged(); return getConnectionIdFieldBuilder().getBuilder(); } @@ -2302,7 +2229,7 @@ public final class Monitoring { * @return Whether the linkId field is set. */ public boolean hasLinkId() { - return linkIdBuilder_ != null || linkId_ != null; + return ((bitField0_ & 0x00000200) != 0); } /** @@ -2326,10 +2253,11 @@ public final class Monitoring { throw new NullPointerException(); } linkId_ = value; - onChanged(); } else { linkIdBuilder_.setMessage(value); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2339,10 +2267,11 @@ public final class Monitoring { public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) { if (linkIdBuilder_ == null) { linkId_ = builderForValue.build(); - onChanged(); } else { linkIdBuilder_.setMessage(builderForValue.build()); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2351,15 +2280,16 @@ public final class Monitoring { */ public Builder mergeLinkId(context.ContextOuterClass.LinkId value) { if (linkIdBuilder_ == null) { - if (linkId_ != null) { - linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial(); + if (((bitField0_ & 0x00000200) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) { + getLinkIdBuilder().mergeFrom(value); } else { linkId_ = value; } - onChanged(); } else { linkIdBuilder_.mergeFrom(value); } + bitField0_ |= 0x00000200; + onChanged(); return this; } @@ -2367,13 +2297,13 @@ public final class Monitoring { * .context.LinkId link_id = 10; */ public Builder clearLinkId() { - if (linkIdBuilder_ == null) { - linkId_ = null; - onChanged(); - } else { - linkId_ = null; + bitField0_ = (bitField0_ & ~0x00000200); + linkId_ = null; + if (linkIdBuilder_ != null) { + linkIdBuilder_.dispose(); linkIdBuilder_ = null; } + onChanged(); return this; } @@ -2381,6 +2311,7 @@ public final class Monitoring { * .context.LinkId link_id = 10; */ public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() { + bitField0_ |= 0x00000200; onChanged(); return getLinkIdFieldBuilder().getBuilder(); } @@ -2434,7 +2365,17 @@ public final class Monitoring { @java.lang.Override public KpiDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new KpiDescriptor(input, extensionRegistry); + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); } }; @@ -2512,74 +2453,13 @@ public final class Monitoring { return new MonitorKpiRequest(); } + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor; + } + @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - - private MonitorKpiRequest(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch(tag) { - case 0: - done = true; - break; - case 10: - { - monitoring.Monitoring.KpiId.Builder subBuilder = null; - if (kpiId_ != null) { - subBuilder = kpiId_.toBuilder(); - } - kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiId_); - kpiId_ = subBuilder.buildPartial(); - } - break; - } - case 21: - { - monitoringWindowS_ = input.readFloat(); - break; - } - case 29: - { - samplingRateS_ = input.readFloat(); - break; - } - default: - { - if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class); + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class); } public static final int KPI_ID_FIELD_NUMBER = 1; @@ -2609,12 +2489,12 @@ public final class Monitoring { */ @java.lang.Override public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { - return getKpiId(); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2; - private float monitoringWindowS_; + private float monitoringWindowS_ = 0F; /** * float monitoring_window_s = 2; @@ -2627,7 +2507,7 @@ public final class Monitoring { public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3; - private float samplingRateS_; + private float samplingRateS_ = 0F; /** *
@@ -2660,13 +2540,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 output.writeFloat(2, monitoringWindowS_);
             }
-            if (samplingRateS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
                 output.writeFloat(3, samplingRateS_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -2678,13 +2558,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
-            if (samplingRateS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingRateS_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2708,7 +2588,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingRateS()) != java.lang.Float.floatToIntBits(other.getSamplingRateS()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -2728,7 +2608,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
             hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingRateS());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2822,26 +2702,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 monitoringWindowS_ = 0F;
@@ -2871,45 +2744,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
                 monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.monitoringWindowS_ = monitoringWindowS_;
-                result.samplingRateS_ = samplingRateS_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.MonitorKpiRequest result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingRateS_ = samplingRateS_;
+                }
             }
 
             @java.lang.Override
@@ -2934,7 +2786,7 @@ public final class Monitoring {
                 if (other.getSamplingRateS() != 0F) {
                     setSamplingRateS(other.getSamplingRateS());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -2946,20 +2798,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    samplingRateS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -2969,7 +2862,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -2993,10 +2886,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3006,10 +2900,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3018,15 +2913,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3034,13 +2930,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -3048,6 +2944,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -3092,6 +2989,7 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3101,6 +2999,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -3132,6 +3031,7 @@ public final class Monitoring {
              */
             public Builder setSamplingRateS(float value) {
                 samplingRateS_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3145,6 +3045,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingRateS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingRateS_ = 0F;
                 onChanged();
                 return this;
@@ -3177,7 +3078,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public MonitorKpiRequest parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new MonitorKpiRequest(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -3322,93 +3233,6 @@ public final class Monitoring {
             return new KpiQuery();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiQuery(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiIds_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiIds_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-                                break;
-                            }
-                        case 21:
-                            {
-                                monitoringWindowS_ = input.readFloat();
-                                break;
-                            }
-                        case 24:
-                            {
-                                lastNSamples_ = input.readUInt32();
-                                break;
-                            }
-                        case 34:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (startTimestamp_ != null) {
-                                    subBuilder = startTimestamp_.toBuilder();
-                                }
-                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(startTimestamp_);
-                                    startTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (endTimestamp_ != null) {
-                                    subBuilder = endTimestamp_.toBuilder();
-                                }
-                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endTimestamp_);
-                                    endTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
         }
@@ -3420,6 +3244,7 @@ public final class Monitoring {
 
         public static final int KPI_IDS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiIds_;
 
         /**
@@ -3464,7 +3289,7 @@ public final class Monitoring {
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_;
+        private float monitoringWindowS_ = 0F;
 
         /**
          * float monitoring_window_s = 2;
@@ -3477,7 +3302,7 @@ public final class Monitoring {
 
         public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
 
-        private int lastNSamples_;
+        private int lastNSamples_ = 0;
 
         /**
          * 
@@ -3531,7 +3356,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return getStartTimestamp();
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
@@ -3573,7 +3398,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return getEndTimestamp();
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3594,7 +3419,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 output.writeMessage(1, kpiIds_.get(i));
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 output.writeFloat(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3606,7 +3431,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(5, getEndTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -3618,7 +3443,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiIds_.get(i));
             }
-            if (monitoringWindowS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3630,7 +3455,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3662,7 +3487,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -3690,7 +3515,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3784,41 +3609,33 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiIdsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiIdsBuilder_ == null) {
                     kpiIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpiIds_ = null;
                     kpiIdsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 monitoringWindowS_ = 0F;
                 lastNSamples_ = 0;
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                } else {
-                    startTimestamp_ = null;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                } else {
-                    endTimestamp_ = null;
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -3846,7 +3663,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiQuery buildPartial() {
                 monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiQuery result) {
                 if (kpiIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
@@ -3856,50 +3681,22 @@ public final class Monitoring {
                 } else {
                     result.kpiIds_ = kpiIdsBuilder_.build();
                 }
-                result.monitoringWindowS_ = monitoringWindowS_;
-                result.lastNSamples_ = lastNSamples_;
-                if (startTimestampBuilder_ == null) {
-                    result.startTimestamp_ = startTimestamp_;
-                } else {
-                    result.startTimestamp_ = startTimestampBuilder_.build();
-                }
-                if (endTimestampBuilder_ == null) {
-                    result.endTimestamp_ = endTimestamp_;
-                } else {
-                    result.endTimestamp_ = endTimestampBuilder_.build();
-                }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiQuery result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.lastNSamples_ = lastNSamples_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -3951,7 +3748,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -3963,17 +3760,75 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiQuery parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                    if (kpiIdsBuilder_ == null) {
+                                        ensureKpiIdsIsMutable();
+                                        kpiIds_.add(m);
+                                    } else {
+                                        kpiIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 24:
+                                {
+                                    lastNSamples_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -4234,6 +4089,7 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4243,6 +4099,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -4274,6 +4131,7 @@ public final class Monitoring {
              */
             public Builder setLastNSamples(int value) {
                 lastNSamples_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4287,6 +4145,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearLastNSamples() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 lastNSamples_ = 0;
                 onChanged();
                 return this;
@@ -4305,7 +4164,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return startTimestampBuilder_ != null || startTimestamp_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -4337,10 +4196,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4354,10 +4214,11 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4370,15 +4231,16 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (startTimestamp_ != null) {
-                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
                     } else {
                         startTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -4390,13 +4252,13 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 4;
              */
             public Builder clearStartTimestamp() {
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                    onChanged();
-                } else {
-                    startTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4408,6 +4270,7 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 4;
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -4455,7 +4318,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return endTimestampBuilder_ != null || endTimestamp_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -4487,10 +4350,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4504,10 +4368,11 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4520,15 +4385,16 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (endTimestamp_ != null) {
-                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
                     } else {
                         endTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -4540,13 +4406,13 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 5;
              */
             public Builder clearEndTimestamp() {
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                    onChanged();
-                } else {
-                    endTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -4558,6 +4424,7 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 5;
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -4619,7 +4486,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiQuery parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiQuery(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -4702,70 +4579,6 @@ public final class Monitoring {
             return new RawKpi();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiValue_ != null) {
-                                    subBuilder = kpiValue_.toBuilder();
-                                }
-                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValue_);
-                                    kpiValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
         }
@@ -4802,7 +4615,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 2;
@@ -4832,7 +4645,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return getKpiValue();
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4856,7 +4669,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(2, getKpiValue());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -4871,7 +4684,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiValue());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4897,7 +4710,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -4917,7 +4730,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5015,32 +4828,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpi.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                bitField0_ = 0;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                } else {
-                    kpiValue_ = null;
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -5068,48 +4873,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpi buildPartial() {
                 monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
-                }
-                if (kpiValueBuilder_ == null) {
-                    result.kpiValue_ = kpiValue_;
-                } else {
-                    result.kpiValue_ = kpiValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -5131,7 +4909,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -5143,20 +4921,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpi parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
-                    throw e.unwrapIOException();
-                } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
                     }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3 timestampBuilder_;
@@ -5166,7 +4978,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -5190,10 +5002,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5203,10 +5016,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5215,15 +5029,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -5231,13 +5046,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 1;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -5245,6 +5060,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 1;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -5280,7 +5096,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return kpiValueBuilder_ != null || kpiValue_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -5304,10 +5120,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5317,10 +5134,11 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5329,15 +5147,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (kpiValue_ != null) {
-                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
                     } else {
                         kpiValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -5345,13 +5164,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 2;
              */
             public Builder clearKpiValue() {
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                    onChanged();
-                } else {
-                    kpiValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -5359,6 +5178,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 2;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -5412,7 +5232,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpi(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -5504,70 +5334,6 @@ public final class Monitoring {
             return new RawKpiList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    rawKpis_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                rawKpis_.add(input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
         }
@@ -5604,11 +5370,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int RAW_KPIS_FIELD_NUMBER = 2;
 
+        @SuppressWarnings("serial")
         private java.util.List rawKpis_;
 
         /**
@@ -5672,7 +5439,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 output.writeMessage(2, rawKpis_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -5687,7 +5454,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, rawKpis_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5709,7 +5476,7 @@ public final class Monitoring {
             }
             if (!getRawKpisList().equals(other.getRawKpisList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -5729,7 +5496,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpisList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5827,35 +5594,28 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getRawKpisFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    rawKpis_ = null;
                     rawKpisBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5881,53 +5641,31 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiList buildPartial() {
                 monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-                int from_bitField0_ = bitField0_;
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiList result) {
                 if (rawKpisBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.rawKpis_ = rawKpis_;
                 } else {
                     result.rawKpis_ = rawKpisBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpiList result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -5950,7 +5688,7 @@ public final class Monitoring {
                     if (!other.rawKpis_.isEmpty()) {
                         if (rawKpis_.isEmpty()) {
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureRawKpisIsMutable();
                             rawKpis_.addAll(other.rawKpis_);
@@ -5963,14 +5701,14 @@ public final class Monitoring {
                             rawKpisBuilder_.dispose();
                             rawKpisBuilder_ = null;
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000001);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             rawKpisBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpisFieldBuilder() : null;
                         } else {
                             rawKpisBuilder_.addAllMessages(other.rawKpis_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -5982,17 +5720,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpiList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    monitoring.Monitoring.RawKpi m = input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry);
+                                    if (rawKpisBuilder_ == null) {
+                                        ensureRawKpisIsMutable();
+                                        rawKpis_.add(m);
+                                    } else {
+                                        rawKpisBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -6007,7 +5782,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -6031,10 +5806,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6044,10 +5820,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6056,15 +5833,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -6072,13 +5850,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -6086,6 +5864,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -6115,9 +5894,9 @@ public final class Monitoring {
             private java.util.List rawKpis_ = java.util.Collections.emptyList();
 
             private void ensureRawKpisIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     rawKpis_ = new java.util.ArrayList(rawKpis_);
-                    bitField0_ |= 0x00000001;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -6269,7 +6048,7 @@ public final class Monitoring {
             public Builder clearRawKpis() {
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     rawKpisBuilder_.clear();
@@ -6343,7 +6122,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3 getRawKpisFieldBuilder() {
                 if (rawKpisBuilder_ == null) {
-                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(rawKpis_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3(rawKpis_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     rawKpis_ = null;
                 }
                 return rawKpisBuilder_;
@@ -6376,7 +6155,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpiList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -6451,57 +6240,6 @@ public final class Monitoring {
             return new RawKpiTable();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private RawKpiTable(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    rawKpiLists_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                rawKpiLists_.add(input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
         }
@@ -6513,6 +6251,7 @@ public final class Monitoring {
 
         public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List rawKpiLists_;
 
         /**
@@ -6573,7 +6312,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 output.writeMessage(1, rawKpiLists_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -6585,7 +6324,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, rawKpiLists_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6601,7 +6340,7 @@ public final class Monitoring {
             monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
             if (!getRawKpiListsList().equals(other.getRawKpiListsList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -6617,7 +6356,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpiListsList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6715,29 +6454,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getRawKpiListsFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (rawKpiListsBuilder_ == null) {
                     rawKpiLists_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    rawKpiLists_ = null;
                     rawKpiListsBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6763,7 +6496,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiTable buildPartial() {
                 monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiTable result) {
                 if (rawKpiListsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
@@ -6773,38 +6514,10 @@ public final class Monitoring {
                 } else {
                     result.rawKpiLists_ = rawKpiListsBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
             }
 
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.RawKpiTable result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -6844,7 +6557,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -6856,17 +6569,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.RawKpiTable parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.RawKpiList m = input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry);
+                                    if (rawKpiListsBuilder_ == null) {
+                                        ensureRawKpiListsIsMutable();
+                                        rawKpiLists_.add(m);
+                                    } else {
+                                        rawKpiListsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -7136,7 +6879,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiTable parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new RawKpiTable(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7198,57 +6951,6 @@ public final class Monitoring {
             return new KpiId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
         }
@@ -7285,7 +6987,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7306,7 +7008,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -7318,7 +7020,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7338,7 +7040,7 @@ public final class Monitoring {
                 if (!getKpiId().equals(other.getKpiId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -7354,7 +7056,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7448,26 +7150,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 return this;
@@ -7495,43 +7190,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiId buildPartial() {
                 monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -7550,7 +7220,7 @@ public final class Monitoring {
                 if (other.hasKpiId()) {
                     mergeKpiId(other.getKpiId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -7562,20 +7232,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -7585,7 +7282,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -7609,10 +7306,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7622,10 +7320,11 @@ public final class Monitoring {
             public Builder setKpiId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7634,15 +7333,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -7650,13 +7350,13 @@ public final class Monitoring {
              * .context.Uuid kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -7664,6 +7364,7 @@ public final class Monitoring {
              * .context.Uuid kpi_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -7717,7 +7418,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -7813,83 +7524,6 @@ public final class Monitoring {
             return new Kpi();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private Kpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 26:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiValue_ != null) {
-                                    subBuilder = kpiValue_.toBuilder();
-                                }
-                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValue_);
-                                    kpiValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
         }
@@ -7926,7 +7560,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 2;
@@ -7956,7 +7590,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 3;
@@ -7986,7 +7620,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return getKpiValue();
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -8013,7 +7647,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(3, getKpiValue());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -8031,7 +7665,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8063,7 +7697,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -8087,7 +7721,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8181,38 +7815,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.Kpi.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                } else {
-                    kpiValue_ = null;
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -8240,53 +7865,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.Kpi buildPartial() {
                 monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
-                }
-                if (kpiValueBuilder_ == null) {
-                    result.kpiValue_ = kpiValue_;
-                } else {
-                    result.kpiValue_ = kpiValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.Kpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -8311,7 +7907,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -8323,20 +7919,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.Kpi parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiIdBuilder_;
@@ -8346,7 +7983,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -8370,10 +8007,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8383,10 +8021,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8395,15 +8034,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -8411,13 +8051,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8425,6 +8065,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 1;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -8460,7 +8101,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -8484,10 +8125,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8497,10 +8139,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8509,15 +8152,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -8525,13 +8169,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 2;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8539,6 +8183,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 2;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -8574,7 +8219,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return kpiValueBuilder_ != null || kpiValue_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -8598,10 +8243,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8611,10 +8257,11 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8623,15 +8270,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (kpiValue_ != null) {
-                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
                     } else {
                         kpiValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -8639,13 +8287,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 3;
              */
             public Builder clearKpiValue() {
-                if (kpiValueBuilder_ == null) {
-                    kpiValue_ = null;
-                    onChanged();
-                } else {
-                    kpiValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
                     kpiValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -8653,6 +8301,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpi_value = 3;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -8706,7 +8355,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Kpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new Kpi(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -8815,85 +8474,6 @@ public final class Monitoring {
             return new KpiValueRange();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiValueRange(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiMinValue_ != null) {
-                                    subBuilder = kpiMinValue_.toBuilder();
-                                }
-                                kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiMinValue_);
-                                    kpiMinValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-                                if (kpiMaxValue_ != null) {
-                                    subBuilder = kpiMaxValue_.toBuilder();
-                                }
-                                kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiMaxValue_);
-                                    kpiMaxValue_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 24:
-                            {
-                                inRange_ = input.readBool();
-                                break;
-                            }
-                        case 32:
-                            {
-                                includeMinValue_ = input.readBool();
-                                break;
-                            }
-                        case 40:
-                            {
-                                includeMaxValue_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
         }
@@ -8930,7 +8510,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-            return getKpiMinValue();
+            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
         }
 
         public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
@@ -8960,12 +8540,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-            return getKpiMaxValue();
+            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
         }
 
         public static final int INRANGE_FIELD_NUMBER = 3;
 
-        private boolean inRange_;
+        private boolean inRange_ = false;
 
         /**
          * 
@@ -8982,7 +8562,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
 
-        private boolean includeMinValue_;
+        private boolean includeMinValue_ = false;
 
         /**
          * 
@@ -8999,7 +8579,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
 
-        private boolean includeMaxValue_;
+        private boolean includeMaxValue_ = false;
 
         /**
          * 
@@ -9044,7 +8624,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 output.writeBool(5, includeMaxValue_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -9068,7 +8648,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeMaxValue_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9100,7 +8680,7 @@ public final class Monitoring {
                 return false;
             if (getIncludeMaxValue() != other.getIncludeMaxValue())
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -9126,7 +8706,7 @@ public final class Monitoring {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMinValue());
             hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMaxValue());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9220,32 +8800,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (kpiMinValueBuilder_ == null) {
-                    kpiMinValue_ = null;
-                } else {
-                    kpiMinValue_ = null;
+                bitField0_ = 0;
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
                     kpiMinValueBuilder_ = null;
                 }
-                if (kpiMaxValueBuilder_ == null) {
-                    kpiMaxValue_ = null;
-                } else {
-                    kpiMaxValue_ = null;
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
                     kpiMaxValueBuilder_ = null;
                 }
                 inRange_ = false;
@@ -9276,51 +8848,30 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValueRange buildPartial() {
                 monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-                if (kpiMinValueBuilder_ == null) {
-                    result.kpiMinValue_ = kpiMinValue_;
-                } else {
-                    result.kpiMinValue_ = kpiMinValueBuilder_.build();
-                }
-                if (kpiMaxValueBuilder_ == null) {
-                    result.kpiMaxValue_ = kpiMaxValue_;
-                } else {
-                    result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.inRange_ = inRange_;
-                result.includeMinValue_ = includeMinValue_;
-                result.includeMaxValue_ = includeMaxValue_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiValueRange result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiMinValue_ = kpiMinValueBuilder_ == null ? kpiMinValue_ : kpiMinValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiMaxValue_ = kpiMaxValueBuilder_ == null ? kpiMaxValue_ : kpiMaxValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.inRange_ = inRange_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeMinValue_ = includeMinValue_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeMaxValue_ = includeMaxValue_;
+                }
             }
 
             @java.lang.Override
@@ -9351,7 +8902,7 @@ public final class Monitoring {
                 if (other.getIncludeMaxValue() != false) {
                     setIncludeMaxValue(other.getIncludeMaxValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -9363,20 +8914,75 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiValueRange parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getKpiMinValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiMaxValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    inRange_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeMinValue_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeMaxValue_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.KpiValue kpiMinValue_;
 
             private com.google.protobuf.SingleFieldBuilderV3 kpiMinValueBuilder_;
@@ -9386,7 +8992,7 @@ public final class Monitoring {
              * @return Whether the kpiMinValue field is set.
              */
             public boolean hasKpiMinValue() {
-                return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -9410,10 +9016,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMinValue_ = value;
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9423,10 +9030,11 @@ public final class Monitoring {
             public Builder setKpiMinValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMinValueBuilder_ == null) {
                     kpiMinValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9435,15 +9043,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMinValueBuilder_ == null) {
-                    if (kpiMinValue_ != null) {
-                        kpiMinValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && kpiMinValue_ != null && kpiMinValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMinValueBuilder().mergeFrom(value);
                     } else {
                         kpiMinValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiMinValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -9451,13 +9060,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMinValue = 1;
              */
             public Builder clearKpiMinValue() {
-                if (kpiMinValueBuilder_ == null) {
-                    kpiMinValue_ = null;
-                    onChanged();
-                } else {
-                    kpiMinValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
                     kpiMinValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -9465,6 +9074,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMinValue = 1;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiMinValueFieldBuilder().getBuilder();
             }
@@ -9500,7 +9110,7 @@ public final class Monitoring {
              * @return Whether the kpiMaxValue field is set.
              */
             public boolean hasKpiMaxValue() {
-                return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -9524,10 +9134,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMaxValue_ = value;
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9537,10 +9148,11 @@ public final class Monitoring {
             public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMaxValueBuilder_ == null) {
                     kpiMaxValue_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9549,15 +9161,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMaxValueBuilder_ == null) {
-                    if (kpiMaxValue_ != null) {
-                        kpiMaxValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiMaxValue_ != null && kpiMaxValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMaxValueBuilder().mergeFrom(value);
                     } else {
                         kpiMaxValue_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -9565,13 +9178,13 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMaxValue = 2;
              */
             public Builder clearKpiMaxValue() {
-                if (kpiMaxValueBuilder_ == null) {
-                    kpiMaxValue_ = null;
-                    onChanged();
-                } else {
-                    kpiMaxValue_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
                     kpiMaxValueBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -9579,6 +9192,7 @@ public final class Monitoring {
              * .monitoring.KpiValue kpiMaxValue = 2;
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiMaxValueFieldBuilder().getBuilder();
             }
@@ -9631,6 +9245,7 @@ public final class Monitoring {
              */
             public Builder setInRange(boolean value) {
                 inRange_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -9644,6 +9259,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearInRange() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 inRange_ = false;
                 onChanged();
                 return this;
@@ -9675,6 +9291,7 @@ public final class Monitoring {
              */
             public Builder setIncludeMinValue(boolean value) {
                 includeMinValue_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -9688,6 +9305,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMinValue() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 includeMinValue_ = false;
                 onChanged();
                 return this;
@@ -9719,6 +9337,7 @@ public final class Monitoring {
              */
             public Builder setIncludeMaxValue(boolean value) {
                 includeMaxValue_ = value;
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -9732,6 +9351,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMaxValue() {
+                bitField0_ = (bitField0_ & ~0x00000010);
                 includeMaxValue_ = false;
                 onChanged();
                 return this;
@@ -9764,7 +9384,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValueRange parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiValueRange(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -9876,7 +9506,7 @@ public final class Monitoring {
          */
         boolean getBoolVal();
 
-        public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+        monitoring.Monitoring.KpiValue.ValueCase getValueCase();
     }
 
     /**
@@ -9901,87 +9531,6 @@ public final class Monitoring {
             return new KpiValue();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiValue(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 8:
-                            {
-                                valueCase_ = 1;
-                                value_ = input.readInt32();
-                                break;
-                            }
-                        case 16:
-                            {
-                                valueCase_ = 2;
-                                value_ = input.readUInt32();
-                                break;
-                            }
-                        case 24:
-                            {
-                                valueCase_ = 3;
-                                value_ = input.readInt64();
-                                break;
-                            }
-                        case 32:
-                            {
-                                valueCase_ = 4;
-                                value_ = input.readUInt64();
-                                break;
-                            }
-                        case 45:
-                            {
-                                valueCase_ = 5;
-                                value_ = input.readFloat();
-                                break;
-                            }
-                        case 50:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                valueCase_ = 6;
-                                value_ = s;
-                                break;
-                            }
-                        case 56:
-                            {
-                                valueCase_ = 7;
-                                value_ = input.readBool();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
         }
@@ -9993,6 +9542,7 @@ public final class Monitoring {
 
         private int valueCase_ = 0;
 
+        @SuppressWarnings("serial")
         private java.lang.Object value_;
 
         public enum ValueCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -10279,7 +9829,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 output.writeBool(7, (boolean) ((java.lang.Boolean) value_));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -10309,7 +9859,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, (boolean) ((java.lang.Boolean) value_));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10357,7 +9907,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -10401,7 +9951,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10495,22 +10045,16 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValue.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 valueCase_ = 0;
                 value_ = null;
                 return this;
@@ -10538,60 +10082,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValue buildPartial() {
                 monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-                if (valueCase_ == 1) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 2) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 3) {
-                    result.value_ = value_;
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                if (valueCase_ == 4) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 5) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 6) {
-                    result.value_ = value_;
-                }
-                if (valueCase_ == 7) {
-                    result.value_ = value_;
-                }
-                result.valueCase_ = valueCase_;
+                buildPartialOneofs(result);
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
+            private void buildPartial0(monitoring.Monitoring.KpiValue result) {
+                int from_bitField0_ = bitField0_;
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartialOneofs(monitoring.Monitoring.KpiValue result) {
+                result.valueCase_ = valueCase_;
+                result.value_ = this.value_;
             }
 
             @java.lang.Override
@@ -10650,7 +10155,7 @@ public final class Monitoring {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -10662,17 +10167,85 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiValue parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 8:
+                                {
+                                    value_ = input.readInt32();
+                                    valueCase_ = 1;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    value_ = input.readUInt32();
+                                    valueCase_ = 2;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    value_ = input.readInt64();
+                                    valueCase_ = 3;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    value_ = input.readUInt64();
+                                    valueCase_ = 4;
+                                    break;
+                                }
+                            // case 32
+                            case 45:
+                                {
+                                    value_ = input.readFloat();
+                                    valueCase_ = 5;
+                                    break;
+                                }
+                            // case 45
+                            case 50:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    valueCase_ = 6;
+                                    value_ = s;
+                                    break;
+                                }
+                            // case 50
+                            case 56:
+                                {
+                                    value_ = input.readBool();
+                                    valueCase_ = 7;
+                                    break;
+                                }
+                            // case 56
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -10691,6 +10264,8 @@ public final class Monitoring {
                 return this;
             }
 
+            private int bitField0_;
+
             /**
              * int32 int32Val = 1;
              * @return Whether the int32Val field is set.
@@ -11078,7 +10653,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValue parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiValue(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -11149,57 +10734,6 @@ public final class Monitoring {
             return new KpiList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpi_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpi_.add(input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpi_ = java.util.Collections.unmodifiableList(kpi_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
         }
@@ -11211,6 +10745,7 @@ public final class Monitoring {
 
         public static final int KPI_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpi_;
 
         /**
@@ -11271,7 +10806,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 output.writeMessage(1, kpi_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -11283,7 +10818,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpi_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11299,7 +10834,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
             if (!getKpiList().equals(other.getKpiList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -11315,7 +10850,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11409,29 +10944,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiBuilder_ == null) {
                     kpi_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpi_ = null;
                     kpiBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11457,7 +10986,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiList buildPartial() {
                 monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiList result) {
                 if (kpiBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpi_ = java.util.Collections.unmodifiableList(kpi_);
@@ -11467,38 +11004,10 @@ public final class Monitoring {
                 } else {
                     result.kpi_ = kpiBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -11538,7 +11047,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -11550,17 +11059,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.Kpi m = input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry);
+                                    if (kpiBuilder_ == null) {
+                                        ensureKpiIsMutable();
+                                        kpi_.add(m);
+                                    } else {
+                                        kpiBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -11830,7 +11369,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -11901,57 +11450,6 @@ public final class Monitoring {
             return new KpiDescriptorList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private KpiDescriptorList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    kpiDescriptorList_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                kpiDescriptorList_.add(input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
         }
@@ -11963,6 +11461,7 @@ public final class Monitoring {
 
         public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List kpiDescriptorList_;
 
         /**
@@ -12023,7 +11522,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 output.writeMessage(1, kpiDescriptorList_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -12035,7 +11534,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiDescriptorList_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12051,7 +11550,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
             if (!getKpiDescriptorListList().equals(other.getKpiDescriptorListList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -12067,7 +11566,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiDescriptorListList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12161,29 +11660,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getKpiDescriptorListFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (kpiDescriptorListBuilder_ == null) {
                     kpiDescriptorList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    kpiDescriptorList_ = null;
                     kpiDescriptorListBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -12209,7 +11702,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptorList buildPartial() {
                 monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptorList result) {
                 if (kpiDescriptorListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
@@ -12219,38 +11720,10 @@ public final class Monitoring {
                 } else {
                     result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.KpiDescriptorList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -12290,7 +11763,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -12302,17 +11775,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.KpiDescriptor m = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
+                                    if (kpiDescriptorListBuilder_ == null) {
+                                        ensureKpiDescriptorListIsMutable();
+                                        kpiDescriptorList_.add(m);
+                                    } else {
+                                        kpiDescriptorListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -12582,7 +12085,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptorList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new KpiDescriptorList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -12731,106 +12244,6 @@ public final class Monitoring {
             return new SubsDescriptor();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 29:
-                            {
-                                samplingDurationS_ = input.readFloat();
-                                break;
-                            }
-                        case 37:
-                            {
-                                samplingIntervalS_ = input.readFloat();
-                                break;
-                            }
-                        case 42:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (startTimestamp_ != null) {
-                                    subBuilder = startTimestamp_.toBuilder();
-                                }
-                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(startTimestamp_);
-                                    startTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (endTimestamp_ != null) {
-                                    subBuilder = endTimestamp_.toBuilder();
-                                }
-                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(endTimestamp_);
-                                    endTimestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
         }
@@ -12867,7 +12280,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
         }
 
         public static final int KPI_ID_FIELD_NUMBER = 2;
@@ -12897,12 +12310,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_;
+        private float samplingDurationS_ = 0F;
 
         /**
          * float sampling_duration_s = 3;
@@ -12915,7 +12328,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_;
+        private float samplingIntervalS_ = 0F;
 
         /**
          * float sampling_interval_s = 4;
@@ -12965,7 +12378,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return getStartTimestamp();
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
@@ -13007,7 +12420,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return getEndTimestamp();
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13031,10 +12444,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(2, getKpiId());
             }
-            if (samplingDurationS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (samplingIntervalS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
                 output.writeFloat(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -13043,7 +12456,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(6, getEndTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -13058,10 +12471,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiId());
             }
-            if (samplingDurationS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (samplingIntervalS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -13070,7 +12483,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13112,7 +12525,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -13144,7 +12557,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13238,46 +12651,36 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
                 samplingIntervalS_ = 0F;
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                } else {
-                    startTimestamp_ = null;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                } else {
-                    endTimestamp_ = null;
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -13305,60 +12708,33 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsDescriptor buildPartial() {
                 monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
-                }
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                result.samplingDurationS_ = samplingDurationS_;
-                result.samplingIntervalS_ = samplingIntervalS_;
-                if (startTimestampBuilder_ == null) {
-                    result.startTimestamp_ = startTimestamp_;
-                } else {
-                    result.startTimestamp_ = startTimestampBuilder_.build();
-                }
-                if (endTimestampBuilder_ == null) {
-                    result.endTimestamp_ = endTimestamp_;
-                } else {
-                    result.endTimestamp_ = endTimestampBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingDurationS_ = samplingDurationS_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.samplingIntervalS_ = samplingIntervalS_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -13392,7 +12768,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -13404,20 +12780,82 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsDescriptor parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 29:
+                                {
+                                    samplingDurationS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            case 37:
+                                {
+                                    samplingIntervalS_ = input.readFloat();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 37
+                            case 42:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -13427,7 +12865,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -13451,10 +12889,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13464,10 +12903,11 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13476,15 +12916,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -13492,13 +12933,13 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13506,6 +12947,7 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -13541,7 +12983,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -13565,10 +13007,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13578,10 +13021,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13590,15 +13034,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -13606,13 +13051,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 2;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13620,6 +13065,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 2;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -13664,6 +13110,7 @@ public final class Monitoring {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -13673,6 +13120,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -13696,6 +13144,7 @@ public final class Monitoring {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -13705,6 +13154,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
+                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -13723,7 +13173,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return startTimestampBuilder_ != null || startTimestamp_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -13755,10 +13205,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13772,10 +13223,11 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13788,15 +13240,16 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (startTimestamp_ != null) {
-                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
                     } else {
                         startTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -13808,13 +13261,13 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 5;
              */
             public Builder clearStartTimestamp() {
-                if (startTimestampBuilder_ == null) {
-                    startTimestamp_ = null;
-                    onChanged();
-                } else {
-                    startTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
                     startTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13826,6 +13279,7 @@ public final class Monitoring {
              * .context.Timestamp start_timestamp = 5;
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -13873,7 +13327,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return endTimestampBuilder_ != null || endTimestamp_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -13905,10 +13359,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13922,10 +13377,11 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13938,15 +13394,16 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (endTimestamp_ != null) {
-                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
                     } else {
                         endTimestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -13958,13 +13415,13 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 6;
              */
             public Builder clearEndTimestamp() {
-                if (endTimestampBuilder_ == null) {
-                    endTimestamp_ = null;
-                    onChanged();
-                } else {
-                    endTimestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
                     endTimestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -13976,6 +13433,7 @@ public final class Monitoring {
              * .context.Timestamp end_timestamp = 6;
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -14037,7 +13495,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsDescriptor(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -14099,57 +13567,6 @@ public final class Monitoring {
             return new SubscriptionID();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubscriptionID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
         }
@@ -14186,7 +13603,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14207,7 +13624,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 output.writeMessage(1, getSubsId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -14219,7 +13636,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14239,7 +13656,7 @@ public final class Monitoring {
                 if (!getSubsId().equals(other.getSubsId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -14255,7 +13672,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -14349,26 +13766,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
                 return this;
@@ -14396,43 +13806,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubscriptionID buildPartial() {
                 monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubscriptionID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -14451,7 +13836,7 @@ public final class Monitoring {
                 if (other.hasSubsId()) {
                     mergeSubsId(other.getSubsId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -14463,20 +13848,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubscriptionID parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -14486,7 +13898,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -14510,10 +13922,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14523,10 +13936,11 @@ public final class Monitoring {
             public Builder setSubsId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14535,15 +13949,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -14551,13 +13966,13 @@ public final class Monitoring {
              * .context.Uuid subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -14565,6 +13980,7 @@ public final class Monitoring {
              * .context.Uuid subs_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14618,7 +14034,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubscriptionID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubscriptionID(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -14697,70 +14123,6 @@ public final class Monitoring {
             return new SubsResponse();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-                                if (subsId_ != null) {
-                                    subBuilder = subsId_.toBuilder();
-                                }
-                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(subsId_);
-                                    subsId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
-                                if (kpiList_ != null) {
-                                    subBuilder = kpiList_.toBuilder();
-                                }
-                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiList_);
-                                    kpiList_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
         }
@@ -14797,7 +14159,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return getSubsId();
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
         }
 
         public static final int KPI_LIST_FIELD_NUMBER = 2;
@@ -14827,7 +14189,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return getKpiList();
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14851,7 +14213,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 output.writeMessage(2, getKpiList());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -14866,7 +14228,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiList());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14892,7 +14254,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -14912,7 +14274,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15006,32 +14368,24 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                } else {
-                    subsId_ = null;
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                } else {
-                    kpiList_ = null;
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -15059,48 +14413,21 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsResponse buildPartial() {
                 monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-                if (subsIdBuilder_ == null) {
-                    result.subsId_ = subsId_;
-                } else {
-                    result.subsId_ = subsIdBuilder_.build();
-                }
-                if (kpiListBuilder_ == null) {
-                    result.kpiList_ = kpiList_;
-                } else {
-                    result.kpiList_ = kpiListBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -15122,7 +14449,7 @@ public final class Monitoring {
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -15134,20 +14461,54 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsResponse parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 subsIdBuilder_;
@@ -15157,7 +14518,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return subsIdBuilder_ != null || subsId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -15181,10 +14542,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15194,10 +14556,11 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15206,15 +14569,16 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (subsId_ != null) {
-                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
                     } else {
                         subsId_ = value;
                     }
-                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -15222,13 +14586,13 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public Builder clearSubsId() {
-                if (subsIdBuilder_ == null) {
-                    subsId_ = null;
-                    onChanged();
-                } else {
-                    subsId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
                     subsIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -15236,6 +14600,7 @@ public final class Monitoring {
              * .monitoring.SubscriptionID subs_id = 1;
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -15271,7 +14636,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return kpiListBuilder_ != null || kpiList_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -15295,10 +14660,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15308,10 +14674,11 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15320,15 +14687,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (kpiList_ != null) {
-                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
                     } else {
                         kpiList_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -15336,13 +14704,13 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 2;
              */
             public Builder clearKpiList() {
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                    onChanged();
-                } else {
-                    kpiList_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -15350,6 +14718,7 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 2;
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -15403,7 +14772,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsResponse(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -15460,69 +14839,18 @@ public final class Monitoring {
         private static final long serialVersionUID = 0L;
 
         // Use SubsList.newBuilder() to construct.
-        private SubsList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
-            super(builder);
-        }
-
-        private SubsList() {
-            subsDescriptor_ = java.util.Collections.emptyList();
-        }
-
-        @java.lang.Override
-        @SuppressWarnings({ "unused" })
-        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
-            return new SubsList();
-        }
-
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private SubsList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    subsDescriptor_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                subsDescriptor_.add(input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
+        private SubsList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+            super(builder);
+        }
+
+        private SubsList() {
+            subsDescriptor_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubsList();
         }
 
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
@@ -15536,6 +14864,7 @@ public final class Monitoring {
 
         public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List subsDescriptor_;
 
         /**
@@ -15596,7 +14925,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 output.writeMessage(1, subsDescriptor_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -15608,7 +14937,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, subsDescriptor_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15624,7 +14953,7 @@ public final class Monitoring {
             monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
             if (!getSubsDescriptorList().equals(other.getSubsDescriptorList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -15640,7 +14969,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsDescriptorList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15734,29 +15063,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getSubsDescriptorFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (subsDescriptorBuilder_ == null) {
                     subsDescriptor_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    subsDescriptor_ = null;
                     subsDescriptorBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -15782,7 +15105,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsList buildPartial() {
                 monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.SubsList result) {
                 if (subsDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
@@ -15792,38 +15123,10 @@ public final class Monitoring {
                 } else {
                     result.subsDescriptor_ = subsDescriptorBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
             }
 
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.SubsList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -15863,7 +15166,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -15875,17 +15178,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.SubsList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.SubsDescriptor m = input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry);
+                                    if (subsDescriptorBuilder_ == null) {
+                                        ensureSubsDescriptorIsMutable();
+                                        subsDescriptor_.add(m);
+                                    } else {
+                                        subsDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -16155,7 +15488,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new SubsList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -16294,108 +15637,6 @@ public final class Monitoring {
             return new AlarmDescriptor();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                alarmDescription_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                name_ = s;
-                                break;
-                            }
-                        case 34:
-                            {
-                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
-                                if (kpiId_ != null) {
-                                    subBuilder = kpiId_.toBuilder();
-                                }
-                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiId_);
-                                    kpiId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 42:
-                            {
-                                monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
-                                if (kpiValueRange_ != null) {
-                                    subBuilder = kpiValueRange_.toBuilder();
-                                }
-                                kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiValueRange_);
-                                    kpiValueRange_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 50:
-                            {
-                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-                                if (timestamp_ != null) {
-                                    subBuilder = timestamp_.toBuilder();
-                                }
-                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(timestamp_);
-                                    timestamp_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
         }
@@ -16432,12 +15673,13 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object alarmDescription_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object alarmDescription_ = "";
 
         /**
          * string alarm_description = 2;
@@ -16474,7 +15716,8 @@ public final class Monitoring {
 
         public static final int NAME_FIELD_NUMBER = 3;
 
-        private volatile java.lang.Object name_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
         /**
          * string name = 3;
@@ -16536,7 +15779,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return getKpiId();
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
 
         public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
@@ -16566,7 +15809,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-            return getKpiValueRange();
+            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 6;
@@ -16596,7 +15839,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return getTimestamp();
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -16617,10 +15860,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!getAlarmDescriptionBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
             }
             if (kpiId_ != null) {
@@ -16632,7 +15875,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 output.writeMessage(6, getTimestamp());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -16644,10 +15887,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!getAlarmDescriptionBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
             }
-            if (!getNameBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
             }
             if (kpiId_ != null) {
@@ -16659,7 +15902,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getTimestamp());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -16701,7 +15944,7 @@ public final class Monitoring {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -16733,7 +15976,7 @@ public final class Monitoring {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -16827,46 +16070,36 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 alarmDescription_ = "";
                 name_ = "";
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                } else {
-                    kpiId_ = null;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
-                if (kpiValueRangeBuilder_ == null) {
-                    kpiValueRange_ = null;
-                } else {
-                    kpiValueRange_ = null;
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
                     kpiValueRangeBuilder_ = null;
                 }
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                } else {
-                    timestamp_ = null;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -16894,60 +16127,33 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmDescriptor buildPartial() {
                 monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
-                }
-                result.alarmDescription_ = alarmDescription_;
-                result.name_ = name_;
-                if (kpiIdBuilder_ == null) {
-                    result.kpiId_ = kpiId_;
-                } else {
-                    result.kpiId_ = kpiIdBuilder_.build();
-                }
-                if (kpiValueRangeBuilder_ == null) {
-                    result.kpiValueRange_ = kpiValueRange_;
-                } else {
-                    result.kpiValueRange_ = kpiValueRangeBuilder_.build();
-                }
-                if (timestampBuilder_ == null) {
-                    result.timestamp_ = timestamp_;
-                } else {
-                    result.timestamp_ = timestampBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.alarmDescription_ = alarmDescription_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.kpiValueRange_ = kpiValueRangeBuilder_ == null ? kpiValueRange_ : kpiValueRangeBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -16968,10 +16174,12 @@ public final class Monitoring {
                 }
                 if (!other.getAlarmDescription().isEmpty()) {
                     alarmDescription_ = other.alarmDescription_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
+                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasKpiId()) {
@@ -16983,7 +16191,7 @@ public final class Monitoring {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -16995,20 +16203,82 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    alarmDescription_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getKpiValueRangeFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -17018,7 +16288,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -17042,10 +16312,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17055,10 +16326,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17067,15 +16339,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -17083,13 +16356,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17097,6 +16370,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -17166,6 +16440,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17176,6 +16451,7 @@ public final class Monitoring {
              */
             public Builder clearAlarmDescription() {
                 alarmDescription_ = getDefaultInstance().getAlarmDescription();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -17191,6 +16467,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17238,6 +16515,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 name_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17248,6 +16526,7 @@ public final class Monitoring {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -17263,6 +16542,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17276,7 +16556,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return kpiIdBuilder_ != null || kpiId_ != null;
+                return ((bitField0_ & 0x00000008) != 0);
             }
 
             /**
@@ -17300,10 +16580,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17313,10 +16594,11 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17325,15 +16607,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (kpiId_ != null) {
-                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000008) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
                     } else {
                         kpiId_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000008;
+                onChanged();
                 return this;
             }
 
@@ -17341,13 +16624,13 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 4;
              */
             public Builder clearKpiId() {
-                if (kpiIdBuilder_ == null) {
-                    kpiId_ = null;
-                    onChanged();
-                } else {
-                    kpiId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000008);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
                     kpiIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17355,6 +16638,7 @@ public final class Monitoring {
              * .monitoring.KpiId kpi_id = 4;
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000008;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -17390,7 +16674,7 @@ public final class Monitoring {
              * @return Whether the kpiValueRange field is set.
              */
             public boolean hasKpiValueRange() {
-                return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
+                return ((bitField0_ & 0x00000010) != 0);
             }
 
             /**
@@ -17414,10 +16698,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValueRange_ = value;
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17427,10 +16712,11 @@ public final class Monitoring {
             public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
                 if (kpiValueRangeBuilder_ == null) {
                     kpiValueRange_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17439,15 +16725,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
                 if (kpiValueRangeBuilder_ == null) {
-                    if (kpiValueRange_ != null) {
-                        kpiValueRange_ = monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000010) != 0) && kpiValueRange_ != null && kpiValueRange_ != monitoring.Monitoring.KpiValueRange.getDefaultInstance()) {
+                        getKpiValueRangeBuilder().mergeFrom(value);
                     } else {
                         kpiValueRange_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000010;
+                onChanged();
                 return this;
             }
 
@@ -17455,13 +16742,13 @@ public final class Monitoring {
              * .monitoring.KpiValueRange kpi_value_range = 5;
              */
             public Builder clearKpiValueRange() {
-                if (kpiValueRangeBuilder_ == null) {
-                    kpiValueRange_ = null;
-                    onChanged();
-                } else {
-                    kpiValueRange_ = null;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
                     kpiValueRangeBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17469,6 +16756,7 @@ public final class Monitoring {
              * .monitoring.KpiValueRange kpi_value_range = 5;
              */
             public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
+                bitField0_ |= 0x00000010;
                 onChanged();
                 return getKpiValueRangeFieldBuilder().getBuilder();
             }
@@ -17504,7 +16792,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return timestampBuilder_ != null || timestamp_ != null;
+                return ((bitField0_ & 0x00000020) != 0);
             }
 
             /**
@@ -17528,10 +16816,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17541,10 +16830,11 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
-                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17553,15 +16843,16 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (timestamp_ != null) {
-                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000020) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
                     } else {
                         timestamp_ = value;
                     }
-                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000020;
+                onChanged();
                 return this;
             }
 
@@ -17569,13 +16860,13 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 6;
              */
             public Builder clearTimestamp() {
-                if (timestampBuilder_ == null) {
-                    timestamp_ = null;
-                    onChanged();
-                } else {
-                    timestamp_ = null;
+                bitField0_ = (bitField0_ & ~0x00000020);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
                     timestampBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -17583,6 +16874,7 @@ public final class Monitoring {
              * .context.Timestamp timestamp = 6;
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000020;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -17636,7 +16928,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmDescriptor(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -17698,57 +17000,6 @@ public final class Monitoring {
             return new AlarmID();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
         }
@@ -17785,7 +17036,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -17806,7 +17057,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -17818,7 +17069,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17838,7 +17089,7 @@ public final class Monitoring {
                 if (!getAlarmId().equals(other.getAlarmId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -17854,7 +17105,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17948,26 +17199,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmID.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 return this;
@@ -17995,43 +17239,18 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmID buildPartial() {
                 monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -18050,7 +17269,7 @@ public final class Monitoring {
                 if (other.hasAlarmId()) {
                     mergeAlarmId(other.getAlarmId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18062,20 +17281,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmID parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -18085,7 +17331,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18109,10 +17355,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18122,10 +17369,11 @@ public final class Monitoring {
             public Builder setAlarmId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18134,15 +17382,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18150,13 +17399,13 @@ public final class Monitoring {
              * .context.Uuid alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18164,6 +17413,7 @@ public final class Monitoring {
              * .context.Uuid alarm_id = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18217,7 +17467,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmID(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -18291,67 +17551,6 @@ public final class Monitoring {
             return new AlarmSubscription();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmSubscription(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 21:
-                            {
-                                subscriptionTimeoutS_ = input.readFloat();
-                                break;
-                            }
-                        case 29:
-                            {
-                                subscriptionFrequencyMs_ = input.readFloat();
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
         }
@@ -18388,12 +17587,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
 
-        private float subscriptionTimeoutS_;
+        private float subscriptionTimeoutS_ = 0F;
 
         /**
          * float subscription_timeout_s = 2;
@@ -18406,7 +17605,7 @@ public final class Monitoring {
 
         public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
 
-        private float subscriptionFrequencyMs_;
+        private float subscriptionFrequencyMs_ = 0F;
 
         /**
          * float subscription_frequency_ms = 3;
@@ -18435,13 +17634,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (subscriptionTimeoutS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
                 output.writeFloat(2, subscriptionTimeoutS_);
             }
-            if (subscriptionFrequencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
                 output.writeFloat(3, subscriptionFrequencyMs_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -18453,13 +17652,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (subscriptionTimeoutS_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, subscriptionTimeoutS_);
             }
-            if (subscriptionFrequencyMs_ != 0F) {
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, subscriptionFrequencyMs_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18483,7 +17682,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs()) != java.lang.Float.floatToIntBits(other.getSubscriptionFrequencyMs()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -18503,7 +17702,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionTimeoutS());
             hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs());
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18597,26 +17796,19 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 subscriptionTimeoutS_ = 0F;
@@ -18646,45 +17838,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmSubscription buildPartial() {
                 monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
-                result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmSubscription result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
+                }
             }
 
             @java.lang.Override
@@ -18709,7 +17880,7 @@ public final class Monitoring {
                 if (other.getSubscriptionFrequencyMs() != 0F) {
                     setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -18721,20 +17892,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmSubscription parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    subscriptionTimeoutS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    subscriptionFrequencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -18744,7 +17956,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -18768,10 +17980,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18781,10 +17994,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18793,15 +18007,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -18809,13 +18024,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -18823,6 +18038,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18867,6 +18083,7 @@ public final class Monitoring {
              */
             public Builder setSubscriptionTimeoutS(float value) {
                 subscriptionTimeoutS_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18876,6 +18093,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionTimeoutS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 subscriptionTimeoutS_ = 0F;
                 onChanged();
                 return this;
@@ -18899,6 +18117,7 @@ public final class Monitoring {
              */
             public Builder setSubscriptionFrequencyMs(float value) {
                 subscriptionFrequencyMs_ = value;
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18908,6 +18127,7 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionFrequencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000004);
                 subscriptionFrequencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -18940,7 +18160,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmSubscription parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmSubscription(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19032,76 +18262,6 @@ public final class Monitoring {
             return new AlarmResponse();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-                                if (alarmId_ != null) {
-                                    subBuilder = alarmId_.toBuilder();
-                                }
-                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(alarmId_);
-                                    alarmId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                text_ = s;
-                                break;
-                            }
-                        case 26:
-                            {
-                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
-                                if (kpiList_ != null) {
-                                    subBuilder = kpiList_.toBuilder();
-                                }
-                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(kpiList_);
-                                    kpiList_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
         }
@@ -19138,12 +18298,13 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return getAlarmId();
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
         }
 
         public static final int TEXT_FIELD_NUMBER = 2;
 
-        private volatile java.lang.Object text_;
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object text_ = "";
 
         /**
          * string text = 2;
@@ -19205,7 +18366,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return getKpiList();
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -19226,13 +18387,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!getTextBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
             }
             if (kpiList_ != null) {
                 output.writeMessage(3, getKpiList());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -19244,13 +18405,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!getTextBytes().isEmpty()) {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
             }
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiList());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19278,7 +18439,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -19300,7 +18461,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19394,33 +18555,25 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                } else {
-                    alarmId_ = null;
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
                 text_ = "";
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                } else {
-                    kpiList_ = null;
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -19448,49 +18601,24 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmResponse buildPartial() {
                 monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
-                if (alarmIdBuilder_ == null) {
-                    result.alarmId_ = alarmId_;
-                } else {
-                    result.alarmId_ = alarmIdBuilder_.build();
-                }
-                result.text_ = text_;
-                if (kpiListBuilder_ == null) {
-                    result.kpiList_ = kpiList_;
-                } else {
-                    result.kpiList_ = kpiListBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.text_ = text_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -19511,12 +18639,13 @@ public final class Monitoring {
                 }
                 if (!other.getText().isEmpty()) {
                     text_ = other.text_;
+                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -19528,20 +18657,61 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmResponse parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    text_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 alarmIdBuilder_;
@@ -19551,7 +18721,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return alarmIdBuilder_ != null || alarmId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -19575,10 +18745,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19588,10 +18759,11 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19600,15 +18772,16 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (alarmId_ != null) {
-                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
                     } else {
                         alarmId_ = value;
                     }
-                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -19616,13 +18789,13 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public Builder clearAlarmId() {
-                if (alarmIdBuilder_ == null) {
-                    alarmId_ = null;
-                    onChanged();
-                } else {
-                    alarmId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
                     alarmIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -19630,6 +18803,7 @@ public final class Monitoring {
              * .monitoring.AlarmID alarm_id = 1;
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -19699,6 +18873,7 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 text_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -19709,6 +18884,7 @@ public final class Monitoring {
              */
             public Builder clearText() {
                 text_ = getDefaultInstance().getText();
+                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -19724,6 +18900,7 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 text_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -19737,7 +18914,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return kpiListBuilder_ != null || kpiList_ != null;
+                return ((bitField0_ & 0x00000004) != 0);
             }
 
             /**
@@ -19761,10 +18938,11 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19774,10 +18952,11 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
-                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19786,15 +18965,16 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (kpiList_ != null) {
-                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000004) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
                     } else {
                         kpiList_ = value;
                     }
-                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000004;
+                onChanged();
                 return this;
             }
 
@@ -19802,13 +18982,13 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 3;
              */
             public Builder clearKpiList() {
-                if (kpiListBuilder_ == null) {
-                    kpiList_ = null;
-                    onChanged();
-                } else {
-                    kpiList_ = null;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
                     kpiListBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -19816,6 +18996,7 @@ public final class Monitoring {
              * .monitoring.KpiList kpi_list = 3;
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -19869,7 +19050,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmResponse(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -19940,57 +19131,6 @@ public final class Monitoring {
             return new AlarmList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private AlarmList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    alarmDescriptor_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                alarmDescriptor_.add(input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
         }
@@ -20002,6 +19142,7 @@ public final class Monitoring {
 
         public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List alarmDescriptor_;
 
         /**
@@ -20062,7 +19203,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 output.writeMessage(1, alarmDescriptor_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -20074,7 +19215,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, alarmDescriptor_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20090,7 +19231,7 @@ public final class Monitoring {
             monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
             if (!getAlarmDescriptorList().equals(other.getAlarmDescriptorList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -20106,7 +19247,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmDescriptorList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20200,29 +19341,23 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getAlarmDescriptorFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (alarmDescriptorBuilder_ == null) {
                     alarmDescriptor_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    alarmDescriptor_ = null;
                     alarmDescriptorBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -20248,7 +19383,15 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmList buildPartial() {
                 monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.AlarmList result) {
                 if (alarmDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
@@ -20258,38 +19401,10 @@ public final class Monitoring {
                 } else {
                     result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(monitoring.Monitoring.AlarmList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -20329,7 +19444,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -20341,17 +19456,47 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                monitoring.Monitoring.AlarmList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    monitoring.Monitoring.AlarmDescriptor m = input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry);
+                                    if (alarmDescriptorBuilder_ == null) {
+                                        ensureAlarmDescriptorIsMutable();
+                                        alarmDescriptor_.add(m);
+                                    } else {
+                                        alarmDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -20621,7 +19766,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new AlarmList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index 83dffd625..7a275e577 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: monitoring.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: monitoring.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class MonitoringServiceGrpc {
 
     private MonitoringServiceGrpc() {
@@ -327,123 +328,130 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
+    public interface AsyncService {
 
         /**
          */
-        public void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
         }
 
         /**
          */
-        public void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver responseObserver) {
+        default void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver responseObserver) {
+        default void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver responseObserver) {
+        default void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
         }
 
         /**
          */
-        public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
+        default void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
         }
 
         /**
          */
-        public void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
+        default void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        public void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
         }
 
         /**
          */
-        public void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
         }
+    }
+
+    /**
+     * Base class for the server implementation of the service MonitoringService.
+     */
+    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(this, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_GET_INSTANT_KPI))).build();
+            return MonitoringServiceGrpc.bindService(this);
         }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub {
 
@@ -566,6 +574,7 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub {
 
@@ -688,6 +697,7 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub {
 
@@ -829,11 +839,11 @@ public final class MonitoringServiceGrpc {
 
     private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod {
 
-        private final MonitoringServiceImplBase serviceImpl;
+        private final AsyncService serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId) {
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -911,6 +921,10 @@ public final class MonitoringServiceGrpc {
         }
     }
 
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers(service, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_GET_INSTANT_KPI))).build();
+    }
+
     private static abstract class MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         MonitoringServiceBaseDescriptorSupplier() {
diff --git a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
index bef889c0d..0812fc8eb 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
@@ -322,70 +322,6 @@ public final class Ztp {
             return new DeviceRoleId();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceRoleId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
-                                if (devRoleId_ != null) {
-                                    subBuilder = devRoleId_.toBuilder();
-                                }
-                                devRoleId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devRoleId_);
-                                    devRoleId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-                                if (devId_ != null) {
-                                    subBuilder = devId_.toBuilder();
-                                }
-                                devId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devId_);
-                                    devId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
         }
@@ -422,7 +358,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
-            return getDevRoleId();
+            return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
         }
 
         public static final int DEVID_FIELD_NUMBER = 2;
@@ -452,7 +388,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
-            return getDevId();
+            return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -476,7 +412,7 @@ public final class Ztp {
             if (devId_ != null) {
                 output.writeMessage(2, getDevId());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -491,7 +427,7 @@ public final class Ztp {
             if (devId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevId());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -517,7 +453,7 @@ public final class Ztp {
                 if (!getDevId().equals(other.getDevId()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -537,7 +473,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVID_FIELD_NUMBER;
                 hash = (53 * hash) + getDevId().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -631,32 +567,24 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleId.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
-                if (devIdBuilder_ == null) {
-                    devId_ = null;
-                } else {
-                    devId_ = null;
+                devId_ = null;
+                if (devIdBuilder_ != null) {
+                    devIdBuilder_.dispose();
                     devIdBuilder_ = null;
                 }
                 return this;
@@ -684,48 +612,21 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleId buildPartial() {
                 ztp.Ztp.DeviceRoleId result = new ztp.Ztp.DeviceRoleId(this);
-                if (devRoleIdBuilder_ == null) {
-                    result.devRoleId_ = devRoleId_;
-                } else {
-                    result.devRoleId_ = devRoleIdBuilder_.build();
-                }
-                if (devIdBuilder_ == null) {
-                    result.devId_ = devId_;
-                } else {
-                    result.devId_ = devIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceRoleId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devId_ = devIdBuilder_ == null ? devId_ : devIdBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -747,7 +648,7 @@ public final class Ztp {
                 if (other.hasDevId()) {
                     mergeDevId(other.getDevId());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -759,20 +660,54 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceRoleId parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDevIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceRoleId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private context.ContextOuterClass.Uuid devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 devRoleIdBuilder_;
@@ -782,7 +717,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return devRoleIdBuilder_ != null || devRoleId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -806,10 +741,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -819,10 +755,11 @@ public final class Ztp {
             public Builder setDevRoleId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -831,15 +768,16 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(context.ContextOuterClass.Uuid value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (devRoleId_ != null) {
-                        devRoleId_ = context.ContextOuterClass.Uuid.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
                     } else {
                         devRoleId_ = value;
                     }
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -847,13 +785,13 @@ public final class Ztp {
              * .context.Uuid devRoleId = 1;
              */
             public Builder clearDevRoleId() {
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                    onChanged();
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -861,6 +799,7 @@ public final class Ztp {
              * .context.Uuid devRoleId = 1;
              */
             public context.ContextOuterClass.Uuid.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -896,7 +835,7 @@ public final class Ztp {
              * @return Whether the devId field is set.
              */
             public boolean hasDevId() {
-                return devIdBuilder_ != null || devId_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -920,10 +859,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devId_ = value;
-                    onChanged();
                 } else {
                     devIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -933,10 +873,11 @@ public final class Ztp {
             public Builder setDevId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (devIdBuilder_ == null) {
                     devId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -945,15 +886,16 @@ public final class Ztp {
              */
             public Builder mergeDevId(context.ContextOuterClass.DeviceId value) {
                 if (devIdBuilder_ == null) {
-                    if (devId_ != null) {
-                        devId_ = context.ContextOuterClass.DeviceId.newBuilder(devId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && devId_ != null && devId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDevIdBuilder().mergeFrom(value);
                     } else {
                         devId_ = value;
                     }
-                    onChanged();
                 } else {
                     devIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -961,13 +903,13 @@ public final class Ztp {
              * .context.DeviceId devId = 2;
              */
             public Builder clearDevId() {
-                if (devIdBuilder_ == null) {
-                    devId_ = null;
-                    onChanged();
-                } else {
-                    devId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devId_ = null;
+                if (devIdBuilder_ != null) {
+                    devIdBuilder_.dispose();
                     devIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -975,6 +917,7 @@ public final class Ztp {
              * .context.DeviceId devId = 2;
              */
             public context.ContextOuterClass.DeviceId.Builder getDevIdBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDevIdFieldBuilder().getBuilder();
             }
@@ -1028,7 +971,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceRoleId(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -1103,63 +1056,6 @@ public final class Ztp {
             return new DeviceRole();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceRole(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
-                                if (devRoleId_ != null) {
-                                    subBuilder = devRoleId_.toBuilder();
-                                }
-                                devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devRoleId_);
-                                    devRoleId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                int rawValue = input.readEnum();
-                                devRoleType_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
         }
@@ -1196,12 +1092,12 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-            return getDevRoleId();
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         }
 
         public static final int DEVROLETYPE_FIELD_NUMBER = 2;
 
-        private int devRoleType_;
+        private int devRoleType_ = 0;
 
         /**
          * .ztp.DeviceRoleType devRoleType = 2;
@@ -1218,8 +1114,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleType getDevRoleType() {
-            @SuppressWarnings("deprecation")
-            ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
+            ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
             return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
         }
 
@@ -1244,7 +1139,7 @@ public final class Ztp {
             if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
                 output.writeEnum(2, devRoleType_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -1259,7 +1154,7 @@ public final class Ztp {
             if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleType_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1281,7 +1176,7 @@ public final class Ztp {
             }
             if (devRoleType_ != other.devRoleType_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -1299,7 +1194,7 @@ public final class Ztp {
             }
             hash = (37 * hash) + DEVROLETYPE_FIELD_NUMBER;
             hash = (53 * hash) + devRoleType_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1393,26 +1288,19 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRole.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
                 devRoleType_ = 0;
@@ -1441,44 +1329,21 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRole buildPartial() {
                 ztp.Ztp.DeviceRole result = new ztp.Ztp.DeviceRole(this);
-                if (devRoleIdBuilder_ == null) {
-                    result.devRoleId_ = devRoleId_;
-                } else {
-                    result.devRoleId_ = devRoleIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.devRoleType_ = devRoleType_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceRole result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devRoleType_ = devRoleType_;
+                }
             }
 
             @java.lang.Override
@@ -1500,7 +1365,7 @@ public final class Ztp {
                 if (other.devRoleType_ != 0) {
                     setDevRoleTypeValue(other.getDevRoleTypeValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -1512,20 +1377,54 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceRole parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    devRoleType_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceRole) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private ztp.Ztp.DeviceRoleId devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 devRoleIdBuilder_;
@@ -1535,7 +1434,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return devRoleIdBuilder_ != null || devRoleId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -1559,10 +1458,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -1572,10 +1472,11 @@ public final class Ztp {
             public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -1584,15 +1485,16 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (devRoleId_ != null) {
-                        devRoleId_ = ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
                     } else {
                         devRoleId_ = value;
                     }
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -1600,13 +1502,13 @@ public final class Ztp {
              * .ztp.DeviceRoleId devRoleId = 1;
              */
             public Builder clearDevRoleId() {
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                    onChanged();
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -1614,6 +1516,7 @@ public final class Ztp {
              * .ztp.DeviceRoleId devRoleId = 1;
              */
             public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -1658,6 +1561,7 @@ public final class Ztp {
              */
             public Builder setDevRoleTypeValue(int value) {
                 devRoleType_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1668,8 +1572,7 @@ public final class Ztp {
              */
             @java.lang.Override
             public ztp.Ztp.DeviceRoleType getDevRoleType() {
-                @SuppressWarnings("deprecation")
-                ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
+                ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
                 return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
             }
 
@@ -1682,6 +1585,7 @@ public final class Ztp {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000002;
                 devRoleType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1692,6 +1596,7 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDevRoleType() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 devRoleType_ = 0;
                 onChanged();
                 return this;
@@ -1724,7 +1629,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRole parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceRole(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -1803,70 +1718,6 @@ public final class Ztp {
             return new DeviceRoleConfig();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceRoleConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                ztp.Ztp.DeviceRole.Builder subBuilder = null;
-                                if (devRole_ != null) {
-                                    subBuilder = devRole_.toBuilder();
-                                }
-                                devRole_ = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devRole_);
-                                    devRole_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 18:
-                            {
-                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-                                if (devConfig_ != null) {
-                                    subBuilder = devConfig_.toBuilder();
-                                }
-                                devConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devConfig_);
-                                    devConfig_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
         }
@@ -1903,7 +1754,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
-            return getDevRole();
+            return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
         }
 
         public static final int DEVCONFIG_FIELD_NUMBER = 2;
@@ -1933,7 +1784,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
-            return getDevConfig();
+            return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
         }
 
         private byte memoizedIsInitialized = -1;
@@ -1957,7 +1808,7 @@ public final class Ztp {
             if (devConfig_ != null) {
                 output.writeMessage(2, getDevConfig());
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -1972,7 +1823,7 @@ public final class Ztp {
             if (devConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevConfig());
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1998,7 +1849,7 @@ public final class Ztp {
                 if (!getDevConfig().equals(other.getDevConfig()))
                     return false;
             }
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -2018,7 +1869,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVCONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDevConfig().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2112,32 +1963,24 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleConfig.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (devRoleBuilder_ == null) {
-                    devRole_ = null;
-                } else {
-                    devRole_ = null;
+                bitField0_ = 0;
+                devRole_ = null;
+                if (devRoleBuilder_ != null) {
+                    devRoleBuilder_.dispose();
                     devRoleBuilder_ = null;
                 }
-                if (devConfigBuilder_ == null) {
-                    devConfig_ = null;
-                } else {
-                    devConfig_ = null;
+                devConfig_ = null;
+                if (devConfigBuilder_ != null) {
+                    devConfigBuilder_.dispose();
                     devConfigBuilder_ = null;
                 }
                 return this;
@@ -2165,48 +2008,21 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleConfig buildPartial() {
                 ztp.Ztp.DeviceRoleConfig result = new ztp.Ztp.DeviceRoleConfig(this);
-                if (devRoleBuilder_ == null) {
-                    result.devRole_ = devRole_;
-                } else {
-                    result.devRole_ = devRoleBuilder_.build();
-                }
-                if (devConfigBuilder_ == null) {
-                    result.devConfig_ = devConfig_;
-                } else {
-                    result.devConfig_ = devConfigBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceRoleConfig result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRole_ = devRoleBuilder_ == null ? devRole_ : devRoleBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devConfig_ = devConfigBuilder_ == null ? devConfig_ : devConfigBuilder_.build();
+                }
             }
 
             @java.lang.Override
@@ -2228,7 +2044,7 @@ public final class Ztp {
                 if (other.hasDevConfig()) {
                     mergeDevConfig(other.getDevConfig());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -2240,20 +2056,54 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceRoleConfig parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDevRoleFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDevConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceRoleConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private ztp.Ztp.DeviceRole devRole_;
 
             private com.google.protobuf.SingleFieldBuilderV3 devRoleBuilder_;
@@ -2263,7 +2113,7 @@ public final class Ztp {
              * @return Whether the devRole field is set.
              */
             public boolean hasDevRole() {
-                return devRoleBuilder_ != null || devRole_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -2287,10 +2137,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRole_ = value;
-                    onChanged();
                 } else {
                     devRoleBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2300,10 +2151,11 @@ public final class Ztp {
             public Builder setDevRole(ztp.Ztp.DeviceRole.Builder builderForValue) {
                 if (devRoleBuilder_ == null) {
                     devRole_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devRoleBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2312,15 +2164,16 @@ public final class Ztp {
              */
             public Builder mergeDevRole(ztp.Ztp.DeviceRole value) {
                 if (devRoleBuilder_ == null) {
-                    if (devRole_ != null) {
-                        devRole_ = ztp.Ztp.DeviceRole.newBuilder(devRole_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && devRole_ != null && devRole_ != ztp.Ztp.DeviceRole.getDefaultInstance()) {
+                        getDevRoleBuilder().mergeFrom(value);
                     } else {
                         devRole_ = value;
                     }
-                    onChanged();
                 } else {
                     devRoleBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -2328,13 +2181,13 @@ public final class Ztp {
              * .ztp.DeviceRole devRole = 1;
              */
             public Builder clearDevRole() {
-                if (devRoleBuilder_ == null) {
-                    devRole_ = null;
-                    onChanged();
-                } else {
-                    devRole_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRole_ = null;
+                if (devRoleBuilder_ != null) {
+                    devRoleBuilder_.dispose();
                     devRoleBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -2342,6 +2195,7 @@ public final class Ztp {
              * .ztp.DeviceRole devRole = 1;
              */
             public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleFieldBuilder().getBuilder();
             }
@@ -2377,7 +2231,7 @@ public final class Ztp {
              * @return Whether the devConfig field is set.
              */
             public boolean hasDevConfig() {
-                return devConfigBuilder_ != null || devConfig_ != null;
+                return ((bitField0_ & 0x00000002) != 0);
             }
 
             /**
@@ -2401,10 +2255,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devConfig_ = value;
-                    onChanged();
                 } else {
                     devConfigBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2414,10 +2269,11 @@ public final class Ztp {
             public Builder setDevConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (devConfigBuilder_ == null) {
                     devConfig_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devConfigBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2426,15 +2282,16 @@ public final class Ztp {
              */
             public Builder mergeDevConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (devConfigBuilder_ == null) {
-                    if (devConfig_ != null) {
-                        devConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(devConfig_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000002) != 0) && devConfig_ != null && devConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDevConfigBuilder().mergeFrom(value);
                     } else {
                         devConfig_ = value;
                     }
-                    onChanged();
                 } else {
                     devConfigBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000002;
+                onChanged();
                 return this;
             }
 
@@ -2442,13 +2299,13 @@ public final class Ztp {
              * .context.DeviceConfig devConfig = 2;
              */
             public Builder clearDevConfig() {
-                if (devConfigBuilder_ == null) {
-                    devConfig_ = null;
-                    onChanged();
-                } else {
-                    devConfig_ = null;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devConfig_ = null;
+                if (devConfigBuilder_ != null) {
+                    devConfigBuilder_.dispose();
                     devConfigBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -2456,6 +2313,7 @@ public final class Ztp {
              * .context.DeviceConfig devConfig = 2;
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDevConfigBuilder() {
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDevConfigFieldBuilder().getBuilder();
             }
@@ -2509,7 +2367,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceRoleConfig(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -2580,57 +2448,6 @@ public final class Ztp {
             return new DeviceRoleList();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceRoleList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    devRole_ = new java.util.ArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                devRole_.add(input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry));
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    devRole_ = java.util.Collections.unmodifiableList(devRole_);
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
         }
@@ -2642,6 +2459,7 @@ public final class Ztp {
 
         public static final int DEVROLE_FIELD_NUMBER = 1;
 
+        @SuppressWarnings("serial")
         private java.util.List devRole_;
 
         /**
@@ -2702,7 +2520,7 @@ public final class Ztp {
             for (int i = 0; i < devRole_.size(); i++) {
                 output.writeMessage(1, devRole_.get(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -2714,7 +2532,7 @@ public final class Ztp {
             for (int i = 0; i < devRole_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devRole_.get(i));
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2730,7 +2548,7 @@ public final class Ztp {
             ztp.Ztp.DeviceRoleList other = (ztp.Ztp.DeviceRoleList) obj;
             if (!getDevRoleList().equals(other.getDevRoleList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -2746,7 +2564,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
                 hash = (53 * hash) + getDevRoleList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2840,29 +2658,23 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleList.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                    getDevRoleFieldBuilder();
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
+                bitField0_ = 0;
                 if (devRoleBuilder_ == null) {
                     devRole_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
+                    devRole_ = null;
                     devRoleBuilder_.clear();
                 }
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -2888,7 +2700,15 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleList buildPartial() {
                 ztp.Ztp.DeviceRoleList result = new ztp.Ztp.DeviceRoleList(this);
-                int from_bitField0_ = bitField0_;
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(ztp.Ztp.DeviceRoleList result) {
                 if (devRoleBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devRole_ = java.util.Collections.unmodifiableList(devRole_);
@@ -2898,38 +2718,10 @@ public final class Ztp {
                 } else {
                     result.devRole_ = devRoleBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
             }
 
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceRoleList result) {
+                int from_bitField0_ = bitField0_;
             }
 
             @java.lang.Override
@@ -2969,7 +2761,7 @@ public final class Ztp {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -2981,17 +2773,47 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceRoleList parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    ztp.Ztp.DeviceRole m = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
+                                    if (devRoleBuilder_ == null) {
+                                        ensureDevRoleIsMutable();
+                                        devRole_.add(m);
+                                    } else {
+                                        devRoleBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceRoleList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
@@ -3261,7 +3083,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceRoleList(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -3336,63 +3168,6 @@ public final class Ztp {
             return new DeviceRoleState();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceRoleState(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
-                                if (devRoleId_ != null) {
-                                    subBuilder = devRoleId_.toBuilder();
-                                }
-                                devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
-                                if (subBuilder != null) {
-                                    subBuilder.mergeFrom(devRoleId_);
-                                    devRoleId_ = subBuilder.buildPartial();
-                                }
-                                break;
-                            }
-                        case 16:
-                            {
-                                int rawValue = input.readEnum();
-                                devRoleState_ = rawValue;
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
         }
@@ -3429,12 +3204,12 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-            return getDevRoleId();
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         }
 
         public static final int DEVROLESTATE_FIELD_NUMBER = 2;
 
-        private int devRoleState_;
+        private int devRoleState_ = 0;
 
         /**
          * .ztp.ZtpDeviceState devRoleState = 2;
@@ -3451,8 +3226,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-            @SuppressWarnings("deprecation")
-            ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
+            ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
             return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
         }
 
@@ -3477,7 +3251,7 @@ public final class Ztp {
             if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, devRoleState_);
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -3492,7 +3266,7 @@ public final class Ztp {
             if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleState_);
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3514,7 +3288,7 @@ public final class Ztp {
             }
             if (devRoleState_ != other.devRoleState_)
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -3532,7 +3306,7 @@ public final class Ztp {
             }
             hash = (37 * hash) + DEVROLESTATE_FIELD_NUMBER;
             hash = (53 * hash) + devRoleState_;
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3626,26 +3400,19 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleState.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
                 devRoleState_ = 0;
@@ -3674,44 +3441,21 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleState buildPartial() {
                 ztp.Ztp.DeviceRoleState result = new ztp.Ztp.DeviceRoleState(this);
-                if (devRoleIdBuilder_ == null) {
-                    result.devRoleId_ = devRoleId_;
-                } else {
-                    result.devRoleId_ = devRoleIdBuilder_.build();
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.devRoleState_ = devRoleState_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceRoleState result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devRoleState_ = devRoleState_;
+                }
             }
 
             @java.lang.Override
@@ -3733,7 +3477,7 @@ public final class Ztp {
                 if (other.devRoleState_ != 0) {
                     setDevRoleStateValue(other.getDevRoleStateValue());
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -3745,20 +3489,54 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceRoleState parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    devRoleState_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceRoleState) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
+            private int bitField0_;
+
             private ztp.Ztp.DeviceRoleId devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3 devRoleIdBuilder_;
@@ -3768,7 +3546,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return devRoleIdBuilder_ != null || devRoleId_ != null;
+                return ((bitField0_ & 0x00000001) != 0);
             }
 
             /**
@@ -3792,10 +3570,11 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3805,10 +3584,11 @@ public final class Ztp {
             public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3817,15 +3597,16 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (devRoleId_ != null) {
-                        devRoleId_ = ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
                     } else {
                         devRoleId_ = value;
                     }
-                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
+                bitField0_ |= 0x00000001;
+                onChanged();
                 return this;
             }
 
@@ -3833,13 +3614,13 @@ public final class Ztp {
              * .ztp.DeviceRoleId devRoleId = 1;
              */
             public Builder clearDevRoleId() {
-                if (devRoleIdBuilder_ == null) {
-                    devRoleId_ = null;
-                    onChanged();
-                } else {
-                    devRoleId_ = null;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
                     devRoleIdBuilder_ = null;
                 }
+                onChanged();
                 return this;
             }
 
@@ -3847,6 +3628,7 @@ public final class Ztp {
              * .ztp.DeviceRoleId devRoleId = 1;
              */
             public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -3891,6 +3673,7 @@ public final class Ztp {
              */
             public Builder setDevRoleStateValue(int value) {
                 devRoleState_ = value;
+                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3901,8 +3684,7 @@ public final class Ztp {
              */
             @java.lang.Override
             public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-                @SuppressWarnings("deprecation")
-                ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
+                ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
                 return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
             }
 
@@ -3915,6 +3697,7 @@ public final class Ztp {
                 if (value == null) {
                     throw new NullPointerException();
                 }
+                bitField0_ |= 0x00000002;
                 devRoleState_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3925,6 +3708,7 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDevRoleState() {
+                bitField0_ = (bitField0_ & ~0x00000002);
                 devRoleState_ = 0;
                 onChanged();
                 return this;
@@ -3957,7 +3741,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleState parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceRoleState(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
@@ -4020,7 +3814,7 @@ public final class Ztp {
         }
 
         private DeviceDeletionResult() {
-            deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+            deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
         }
 
         @java.lang.Override
@@ -4029,58 +3823,6 @@ public final class Ztp {
             return new DeviceDeletionResult();
         }
 
-        @java.lang.Override
-        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
-            return this.unknownFields;
-        }
-
-        private DeviceDeletionResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-            this();
-            if (extensionRegistry == null) {
-                throw new java.lang.NullPointerException();
-            }
-            int mutable_bitField0_ = 0;
-            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
-            try {
-                boolean done = false;
-                while (!done) {
-                    int tag = input.readTag();
-                    switch(tag) {
-                        case 0:
-                            done = true;
-                            break;
-                        case 10:
-                            {
-                                java.lang.String s = input.readStringRequireUtf8();
-                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                                    deleted_ = new com.google.protobuf.LazyStringArrayList();
-                                    mutable_bitField0_ |= 0x00000001;
-                                }
-                                deleted_.add(s);
-                                break;
-                            }
-                        default:
-                            {
-                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
-                                    done = true;
-                                }
-                                break;
-                            }
-                    }
-                }
-            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                throw e.setUnfinishedMessage(this);
-            } catch (java.io.IOException e) {
-                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-            } finally {
-                if (((mutable_bitField0_ & 0x00000001) != 0)) {
-                    deleted_ = deleted_.getUnmodifiableView();
-                }
-                this.unknownFields = unknownFields.build();
-                makeExtensionsImmutable();
-            }
-        }
-
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
         }
@@ -4092,7 +3834,8 @@ public final class Ztp {
 
         public static final int DELETED_FIELD_NUMBER = 1;
 
-        private com.google.protobuf.LazyStringList deleted_;
+        @SuppressWarnings("serial")
+        private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
 
         /**
          * repeated string deleted = 1;
@@ -4146,7 +3889,7 @@ public final class Ztp {
             for (int i = 0; i < deleted_.size(); i++) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deleted_.getRaw(i));
             }
-            unknownFields.writeTo(output);
+            getUnknownFields().writeTo(output);
         }
 
         @java.lang.Override
@@ -4163,7 +3906,7 @@ public final class Ztp {
                 size += dataSize;
                 size += 1 * getDeletedList().size();
             }
-            size += unknownFields.getSerializedSize();
+            size += getUnknownFields().getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4179,7 +3922,7 @@ public final class Ztp {
             ztp.Ztp.DeviceDeletionResult other = (ztp.Ztp.DeviceDeletionResult) obj;
             if (!getDeletedList().equals(other.getDeletedList()))
                 return false;
-            if (!unknownFields.equals(other.unknownFields))
+            if (!getUnknownFields().equals(other.getUnknownFields()))
                 return false;
             return true;
         }
@@ -4195,7 +3938,7 @@ public final class Ztp {
                 hash = (37 * hash) + DELETED_FIELD_NUMBER;
                 hash = (53 * hash) + getDeletedList().hashCode();
             }
-            hash = (29 * hash) + unknownFields.hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4289,24 +4032,17 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceDeletionResult.newBuilder()
             private Builder() {
-                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
-                maybeForceBuilderInitialization();
-            }
-
-            private void maybeForceBuilderInitialization() {
-                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
-                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-                bitField0_ = (bitField0_ & ~0x00000001);
+                bitField0_ = 0;
+                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
                 return this;
             }
 
@@ -4332,44 +4068,19 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceDeletionResult buildPartial() {
                 ztp.Ztp.DeviceDeletionResult result = new ztp.Ztp.DeviceDeletionResult(this);
-                int from_bitField0_ = bitField0_;
-                if (((bitField0_ & 0x00000001) != 0)) {
-                    deleted_ = deleted_.getUnmodifiableView();
-                    bitField0_ = (bitField0_ & ~0x00000001);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
                 }
-                result.deleted_ = deleted_;
                 onBuilt();
                 return result;
             }
 
-            @java.lang.Override
-            public Builder clone() {
-                return super.clone();
-            }
-
-            @java.lang.Override
-            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.setField(field, value);
-            }
-
-            @java.lang.Override
-            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
-                return super.clearField(field);
-            }
-
-            @java.lang.Override
-            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-                return super.clearOneof(oneof);
-            }
-
-            @java.lang.Override
-            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
-                return super.setRepeatedField(field, index, value);
-            }
-
-            @java.lang.Override
-            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
-                return super.addRepeatedField(field, value);
+            private void buildPartial0(ztp.Ztp.DeviceDeletionResult result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    deleted_.makeImmutable();
+                    result.deleted_ = deleted_;
+                }
             }
 
             @java.lang.Override
@@ -4388,14 +4099,14 @@ public final class Ztp {
                 if (!other.deleted_.isEmpty()) {
                     if (deleted_.isEmpty()) {
                         deleted_ = other.deleted_;
-                        bitField0_ = (bitField0_ & ~0x00000001);
+                        bitField0_ |= 0x00000001;
                     } else {
                         ensureDeletedIsMutable();
                         deleted_.addAll(other.deleted_);
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.unknownFields);
+                this.mergeUnknownFields(other.getUnknownFields());
                 onChanged();
                 return this;
             }
@@ -4407,29 +4118,55 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                ztp.Ztp.DeviceDeletionResult parsedMessage = null;
+                if (extensionRegistry == null) {
+                    throw new java.lang.NullPointerException();
+                }
                 try {
-                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                    boolean done = false;
+                    while (!done) {
+                        int tag = input.readTag();
+                        switch(tag) {
+                            case 0:
+                                done = true;
+                                break;
+                            case 10:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    ensureDeletedIsMutable();
+                                    deleted_.add(s);
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    parsedMessage = (ztp.Ztp.DeviceDeletionResult) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    if (parsedMessage != null) {
-                        mergeFrom(parsedMessage);
-                    }
+                    onChanged();
                 }
+                // finally
                 return this;
             }
 
             private int bitField0_;
 
-            private com.google.protobuf.LazyStringList deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+            private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
 
             private void ensureDeletedIsMutable() {
-                if (!((bitField0_ & 0x00000001) != 0)) {
+                if (!deleted_.isModifiable()) {
                     deleted_ = new com.google.protobuf.LazyStringArrayList(deleted_);
-                    bitField0_ |= 0x00000001;
                 }
+                bitField0_ |= 0x00000001;
             }
 
             /**
@@ -4437,7 +4174,8 @@ public final class Ztp {
              * @return A list containing the deleted.
              */
             public com.google.protobuf.ProtocolStringList getDeletedList() {
-                return deleted_.getUnmodifiableView();
+                deleted_.makeImmutable();
+                return deleted_;
             }
 
             /**
@@ -4478,6 +4216,7 @@ public final class Ztp {
                 }
                 ensureDeletedIsMutable();
                 deleted_.set(index, value);
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4493,6 +4232,7 @@ public final class Ztp {
                 }
                 ensureDeletedIsMutable();
                 deleted_.add(value);
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4505,6 +4245,7 @@ public final class Ztp {
             public Builder addAllDeleted(java.lang.Iterable values) {
                 ensureDeletedIsMutable();
                 com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deleted_);
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4514,8 +4255,9 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDeleted() {
-                deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
                 bitField0_ = (bitField0_ & ~0x00000001);
+                ;
                 onChanged();
                 return this;
             }
@@ -4532,6 +4274,7 @@ public final class Ztp {
                 checkByteStringIsUtf8(value);
                 ensureDeletedIsMutable();
                 deleted_.add(value);
+                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4563,7 +4306,17 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceDeletionResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                return new DeviceDeletionResult(input, extensionRegistry);
+                Builder builder = newBuilder();
+                try {
+                    builder.mergeFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.setUnfinishedMessage(builder.buildPartial());
+                } catch (com.google.protobuf.UninitializedMessageException e) {
+                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
+                } catch (java.io.IOException e) {
+                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
+                }
+                return builder.buildPartial();
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
index 796e4bcee..e989a3637 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
@@ -4,7 +4,8 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: ztp.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: ztp.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class ZtpServiceGrpc {
 
     private ZtpServiceGrpc() {
@@ -147,51 +148,58 @@ public final class ZtpServiceGrpc {
 
     /**
      */
-    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
+    public interface AsyncService {
 
         /**
          */
-        public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
         }
 
         /**
          */
-        public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
         }
 
         /**
          */
-        public void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
         }
 
         /**
          */
-        public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
         }
 
         /**
          */
-        public void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
         }
 
         /**
          */
-        public void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
+        default void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
         }
+    }
+
+    /**
+     * Base class for the server implementation of the service ZtpService.
+     */
+    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getZtpGetDeviceRoleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_GET_DEVICE_ROLE))).addMethod(getZtpGetDeviceRolesByDeviceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID))).addMethod(getZtpAddMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_ADD))).addMethod(getZtpUpdateMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_UPDATE))).addMethod(getZtpDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_DELETE))).addMethod(getZtpDeleteAllMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(this, METHODID_ZTP_DELETE_ALL))).build();
+            return ZtpServiceGrpc.bindService(this);
         }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service ZtpService.
      */
     public static class ZtpServiceStub extends io.grpc.stub.AbstractAsyncStub {
 
@@ -242,6 +250,7 @@ public final class ZtpServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service ZtpService.
      */
     public static class ZtpServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub {
 
@@ -292,6 +301,7 @@ public final class ZtpServiceGrpc {
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service ZtpService.
      */
     public static class ZtpServiceFutureStub extends io.grpc.stub.AbstractFutureStub {
 
@@ -355,11 +365,11 @@ public final class ZtpServiceGrpc {
 
     private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, io.grpc.stub.ServerCalls.ServerStreamingMethod, io.grpc.stub.ServerCalls.ClientStreamingMethod, io.grpc.stub.ServerCalls.BidiStreamingMethod {
 
-        private final ZtpServiceImplBase serviceImpl;
+        private final AsyncService serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId) {
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -401,6 +411,10 @@ public final class ZtpServiceGrpc {
         }
     }
 
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getZtpGetDeviceRoleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_GET_DEVICE_ROLE))).addMethod(getZtpGetDeviceRolesByDeviceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID))).addMethod(getZtpAddMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_ADD))).addMethod(getZtpUpdateMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_UPDATE))).addMethod(getZtpDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_DELETE))).addMethod(getZtpDeleteAllMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers(service, METHODID_ZTP_DELETE_ALL))).build();
+    }
+
     private static abstract class ZtpServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ZtpServiceBaseDescriptorSupplier() {
diff --git a/tfs.json b/tfs.json
new file mode 100644
index 000000000..32a68acb1
--- /dev/null
+++ b/tfs.json
@@ -0,0 +1,59 @@
+{
+    "apiVersion": "v1",
+    "kind": "Namespace",
+    "metadata": {
+        "creationTimestamp": "2024-12-20T10:19:11Z",
+        "deletionTimestamp": "2024-12-20T10:48:23Z",
+        "labels": {
+            "kubernetes.io/metadata.name": "tfs"
+        },
+        "name": "tfs",
+        "resourceVersion": "71006899",
+        "uid": "d76377f3-1b5f-4f96-bef9-59924490582b"
+    },
+    "spec": {
+        "finalizers": [
+
+        ]
+    },
+    "status": {
+        "conditions": [
+            {
+                "lastTransitionTime": "2024-12-20T10:48:28Z",
+                "message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: tap.linkerd.io/v1alpha1: the server is currently unable to handle the request",
+                "reason": "DiscoveryFailed",
+                "status": "True",
+                "type": "NamespaceDeletionDiscoveryFailure"
+            },
+            {
+                "lastTransitionTime": "2024-12-20T10:48:31Z",
+                "message": "All legacy kube types successfully parsed",
+                "reason": "ParsedGroupVersions",
+                "status": "False",
+                "type": "NamespaceDeletionGroupVersionParsingFailure"
+            },
+            {
+                "lastTransitionTime": "2024-12-20T10:48:38Z",
+                "message": "All content successfully deleted, may be waiting on finalization",
+                "reason": "ContentDeleted",
+                "status": "False",
+                "type": "NamespaceDeletionContentFailure"
+            },
+            {
+                "lastTransitionTime": "2024-12-20T10:48:38Z",
+                "message": "All content successfully removed",
+                "reason": "ContentRemoved",
+                "status": "False",
+                "type": "NamespaceContentRemaining"
+            },
+            {
+                "lastTransitionTime": "2024-12-20T10:48:31Z",
+                "message": "All content-preserving finalizers finished",
+                "reason": "ContentHasNoFinalizers",
+                "status": "False",
+                "type": "NamespaceFinalizersRemaining"
+            }
+        ],
+        "phase": "Terminating"
+    }
+}
-- 
GitLab